2010-03-22

Полезное свойство функции substr в PHP

Функция substr служит для взятия подстроки, синткасис у нее следующий:

string substr ( string string, int start [, int length] )

Допустим, вам нужно отрезать последний символ, знатоки Javascript или Си напишут примерно следующее:

$s = 'some string1';
$s = substr($s,0,strlen($s)-1); //some string

пока терпимо, хотя код уже явно громоздкий и трудный для понимания, задача усложняется если нужно получить несколько последних символов в строке:

$s = 'some string123';
$s = substr($s,strlen($s)-4); //123

понять что делает этот код довольно трудно, несмотря на то что его назначение тривиальнейшее.

К счастью в PHP в substr можно использовать ОТРИЦАТЕЛЬНЫЕ ЗНАЧЕНИЯ для стартового символа и длинны:

//пример первый
$s = 'some string1';
$s = substr($s,0,-1); //some string

//пример второй
$s = 'some string123';
$s = substr($s,-3); //123

 

Кака видно, в этом случае код читается на порядок проще. Ничего подобного нет ни в Си ни в JavaScript, а жаль.

 

комментарии:

 
Атиух (анонимный пользователь) | 2010-03-22
В ruby: "somestring1"[0..-2] Или просто "somestring1".chop
Атиух (анонимный пользователь) | 2010-03-22
И "sometring123"[-4..-1] или "somestring123".last(3) во втором случае
max | 2010-03-22

Да, руби в этом плане здорово продуман - японцам за это большущий респект.

Эдик (анонимный пользователь) | 2011-07-09

В JavaScript String.substr(-4)  работает в Firefox , но не работает в IE (В 9 не проверял)

Для того чтобы каждый раз не представляться можно войти как зарегистрированный пользователь.

Имя*

разрешены только теги br, font, span, p, strong, u, p, blockquote, a, div, img - остальные будут безжалостно удаляться