2009-04-23 5 views
9

Как можно вырезать строку перед «(» знакома с PHPВырезать строку перед символом с PHP

Например: $ а = «а Декабрь г (золото)»;

Как я могу вырезать строку стать только «а декабрь г» ??

Я пытался использовал этот strstr ($ а, «(», правду), но ошибки отображение

ответ

21

Вы можете сделать это, используя explode:.

list($what_you_want,) = explode('(', $str, 2); 

Или вы могли бы также сделать это, используя substr и strpos:

$what_you_want = substr($str, 0, strpos($str, '(')); 

Причина вы получили ошибку, используя strstr потому, что последний аргумент не доступен, если у вас есть PHP 5.3.0 или более поздней версии.

+1

You даже не нужна переменная $ garbage : list ($ what_you_want,) = explode ('(', $ str, 2); также работает. – hbw

+0

действительно так и есть. исправлено. –

+0

Кроме того, он сказал, что strstr ($ str, '(', true) не работает, поэтому я предполагаю, что у него нет 5.3.0 ... – hbw

1

Используя этот кусок кода действительно хорошее решение:

$what_you_want = substr($str, 0, strpos($str, '(')); 

Тем не менее, я хотел бы указать на то, что это сократит вашу строку в первом наступлении «(». Shoud вы хотите, чтобы сократить его в последнем вхождении «(», вы должны использовать

$what_you_want = substr($str, 0, strrpos($str, '(')); 

Я нашел, что это часто бывает, когда слом содержимого HTML, например (из вложенных тегов).

Приветствия, Joan

2

Как насчет strstr:

$topic = strstr('Some topic :: part to exclude', '::', TRUE);

затем

$topic = Некоторые темы

Edit: право ... 5.3+ только

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