2009-04-23 9 views
9

Comment puis-je couper la chaîne avant '(' signe avec phpchaîne Cut avant un symbole avec php

Par exemple: $ a = "abc décembre g (or)";

Comment puis-je couper la chaîne devient seulement "abc g décembre" ??

J'ai essayé de strstr utilisé cette ($ a, '(', true), mais l'affichage erreur

Répondre

21

Vous pouvez faire cela, en utilisant explode.

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

Ou vous pourriez aussi ce faire, en utilisant substr et strpos:

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

La raison pour laquelle vous avez l'erreur à l'aide strstr est parce que le dernier argument n'est pas disponible sauf si vous avez PHP 5.3.0 ou version ultérieure.

+1

Vous n'avez même pas besoin d'une variable $ garbage : list ($ what_you_want,) = explode ('(', $ str, 2); fonctionne aussi bien. – hbw

+0

en effet, il le fait. fixé. –

+0

Aussi, il a dit strstr ($ str, '(', true), ne fonctionne pas, donc je suppose qu'il n'a pas 5.3.0 ... – hbw

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

L'utilisation de ce morceau de code est en effet une bonne solution:

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

encore, je voudrais souligner le fait qu'il coupera votre chaîne à la première occurence de « (». vous voulez SHOUD couper au DERNIERE de occurence « (», vous devez utiliser

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

Je trouve qu'il est souvent le cas lorsque la teneur en html par exemple la casse (en raison de balises imbriquées).

Cheers, Joan

2

Que diriez-vous strstr:

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

puis

$topic = un sujet

Edit: droite ... 5.3+ uniquement

Questions connexes