2009-04-23 14 views
9

Jak mogę wyciąć ciąg przed '(' podpisać z phpCut ciąg przed symbolem PHP

Na przykład: $ a = "abc grudnia g (złoto)";

Jak mogę przeciąć łańcuch stać tylko "abc grudnia g" ??

starałem się stosować tę strstr ($ a, '(', true) ale błędzie wyświetlacz

Odpowiedz

21

można to zrobić, korzystając explode.

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

Albo można też to zrobić, używając substr i strpos:

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

Powodem masz błąd używając strstr dlatego, że ostatni argument nie jest dostępna, chyba że masz PHP 5.3.0 lub nowszej.

+1

You nawet nie potrzebujemy zmiennej $ garbage : list ($ what_you_want,) = explode ('(', $ str, 2); działa również. – hbw

+0

Rzeczywiście tak. naprawiony. –

+0

Powiedział też, że strstr ($ str, '(', true), nie działa, więc zakładam, że nie ma 5.3.0 ... – hbw

5
$a=substr($a, 0, strpos($a, '(')); 
1

Stosując ten kawałek kodu jest rzeczywiście dobrym rozwiązaniem:

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

Mimo to, chciałbym zwrócić uwagę na fakt, że będzie wyciąć ciąg na pierwszego wystąpienia „(”. powinni chcesz wyciąć go w ostatniej występowania „(” należy użyć

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

I okazało się, że często zdarza się podczas złomowania zawartości HTML na przykład (bo zagnieżdżonych znaczników).

Cheers, Joan

2

Jak o strstr:

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

następnie

$topic = Niektóre temat

Edit: prawo ... 5.3+ tylko