2010-09-22 2 views
36

В PHP, что является самым простым способом вернуть часть строки до первого появления определенного символа?Вернуть часть строки перед первым вхождением символа в php

Например, если у меня есть строка ...

«шустрый пьяные перепрыгнул и т.д. и т.п.»

... и я фильтрация для символа пробела (»«), то функция вернет "The"

Спасибо!

+0

Вы можете найти [ 's ($ строка) -> beforeFirst (» «)'] (HTTPS : //github.com/delight-im/PHP-Str/blob/8fd0c608d5496d43adaa899642c1cce047e076dc/src/Str.php#L389) полезно, как показано в [этой автономной библиотеке] (https://github.com/delight-im/ PHP-Str). – caw

ответ

50

Вы могли это сделать:

$string = 'The quick brown fox jumped over the lazy dog'; 
$substring = substr($string, 0, strpos($string, ' ')); 

Но мне нравится эта лучше:

list($firstWord) = explode(' ', $string); 
+0

Неужели это не приведет к ошибкам? Я думал, что для ссылки на количество переменных в массиве, который вы взрываете, у ссылки должен быть сопоставленный набор (или пустой запятой). – Alex

+1

в случае, если вы хотите вернуть переменную вместо ее назначения 'return array_shift (explode ('', $ string));' –

+2

Если строка (здесь пробел) не найдена, первая возвращает пустую строку. Второй возвращает всю строку. – Progrock

18

strstr() Найти первое вхождение строки. Возвращает часть строки стога сена, начиная с первого появления иглы до конца стога сена.

Третий параметр: Если TRUE, strstr() возвращает часть стога сена до первого появления иглы (за исключением иглы).

$haystack = 'The quick brown foxed jumped over the etc etc.'; 
$needle = ' '; 
echo strstr($haystack, $needle, true); 

Печать The.

+0

Я пробовал этот код и получил предупреждение:« Неверный параметр для strstr() ». Причина в том, что этот код работает только с PHP 5.3.0. Я использую более раннюю версию PHP. – matsolof

+1

Если игла не найдена, она возвращает false. Это то, что вы ожидаете. Так что лично это кажется лучшим ответом. Во многих других ответах вам, вероятно, также потребуется проверить, что строка содержит токен, иначе вы получите непредсказуемые результаты. Если, конечно, это не дано. – Progrock

+0

Чистота и простая с хорошими соглашениями об именах для четкого понимания. – Kray

4

Как об этом:

$string = "The quick brown fox jumped over the etc etc."; 

$splitter = " "; 

$pieces = explode($splitter, $string); 

echo $pieces[0]; 
+0

Если разделитель не найден, он возвращает всю строку. – Progrock

+0

@ Progrock, что случилось? Что еще вы хотите? – Soaku

+0

@ Сяку, это просто наблюдение. – Progrock

73

для Googlers: strtok лучше для этого

echo strtok("The quick brown fox", ' '); 
+5

Мне кажется, это лучшее решение. – matsolof

+0

Лучшее решение [2]! –

+1

Только сбой в strtok, если токен не найден, он возвращает всю строку. – Progrock

Смежные вопросы