2009-07-15 7 views

ответ

21

Вот один из способов:

$print=preg_replace('/^([^,]*).*$/', '$1', $print); 

Другой

list($firstpart)=explode(',', $print); 
+3

Регулярное выражение кажется немного излишним для простых манипуляций с строками? – schmilblick

+3

Regex - это немного решение канонического мяча для проблемы с комарами –

+0

Мне нравится ваш второй пример. Это умный способ обойти, что вы не можете использовать explode (',', $ print) [0]. Я бы использовал array_shift, но мне нравится идея списка лучше. –

9

Это должно работать для вас:

$r = (strstr($print, ',') ? substr($print, 0, strpos($print, ',')) : $print); 
# $r contains everything before the comma, and the entire string if no comma is present 
+2

это работает п или приведенный пример, но не сработает, если строка не содержит запятую. –

+1

Ах, правда! Измененный код для его обработки. – schmilblick

6

Вы можете использовать регулярное выражение, но если это всегда будет одно спаривание с запятой, я бы просто сделать это:


$printArray = explode(",", $print); 
$print = $printArray[0]; 
+3

Вы не имеете в виду $ printArray [0]? –

+1

Да, я исправил его. –

3
$string="50 days,7 hours"; 
$s = preg_split("/,/",$string); 
print $s[0]; 
+0

Я не могу себе представить, почему это проголосовало. к нижнему избирателю, позаботиться объяснить? – ghostdog74

+0

Возможно, это было потому, что вы использовали preg_split(), который немного переборщил? –

+1

Я не думаю, что его перебор. он решает проблему, не так ли. – ghostdog74

3

Вы также можете использовать current функцию:

$firstpart = current(explode(',', $print)); // will return current item in array, by default first 

также другие функции из этого семейства:

$nextpart = next(explode(',', $print)); // will return next item in array 

$lastpart = end(explode(',', $print)); // will return last item in array 
Смежные вопросы