2010-11-19 2 views
36

, что это самый быстрый способ получить только important_stuff часть из строки, как это:Получить строку после строки из строки

bla-bla_delimiter_important_stuff 

_delimiter_ всегда есть, но остальная часть строки может меняться ,

+1

, похоже, сомнение в том, что символы подчеркивания буквально есть или нет. любые решения ниже хороши. –

+0

Вы можете найти ['s ($ str) -> afterFirst ('_delimiter_')'] (https://github.com/delight-im/PHP-Str/blob/8fd0c608d5496d43adaa899642c1cce047e076dc/src/Str.php#L435) или ['s ($ str) -> afterLast ('_delimiter_')'] (https://github.com/delight-im/PHP-Str/blob/8fd0c608d5496d43adaa899642c1cce047e076dc/src/Str.php#L445) полезно, поскольку найденный в [этой автономной библиотеке] (https://github.com/delight-im/PHP-Str). – caw

ответ

54

здесь:

$arr = explode('delimeter', $initialString); 
$important = $arr[1]; 
+1

Простой и эффективный, хороший ответ. – jsims281

+6

В PHP 5.4 ... для этого случая, в частности ... вы можете сделать следующий один лайнер ... '$ important = explode (« delimeter », $ initialString) [1];' – zgr024

+5

3 приветствия для разыменования! = D –

4
$string = "bla-bla_delimiter_important_stuff"; 
list($junk,$important_stufF) = explode("_delimiter_",$string); 

echo $important_stuff; 
> important_stuff 
+2

Мне нравится использование списка. когда у вас сначала был массив, я думал, что вы показали мне питон-подобную возможность php, которую я не знал! –

+0

прохладный. спасибо :) – Alex

6
 
$importantStuff = array_pop(explode('_delimiter_', $string)); 
+1

». Это вызовет ошибку «E_STRICT» («Строгие стандарты: только переменные должны передаваться по ссылке»), поскольку array_pop использует ссылку, но она по-прежнему работает. –

30
$result = end(explode('_delimiter_', 'bla-bla_delimiter_important_stuff')); 
+0

Очень умное решение. – andcl

+1

Это бросит: Строгие стандарты: только переменные должны передаваться по ссылке. Вы должны назначить explode() переменной temp var. –

4

Мне нравится этот метод:

$str="bla-bla_delimiter_important_stuff"; 
$del="_delimiter_"; 
$pos=strpos($str, $del); 

вырезка из конца разделителя до конца строки

$important=substr($str, $pos+strlen($del)-1, strlen($str)-1); 

примечание:

1) для подстрока начало строки в '0', тогда как для StrPos & StrLen принимает размер строки (начинается в '1')

2) с использованием 1 символов разделитель может быть, хорошая идея