2010-11-19 3 views
36

ce qui est le meilleur moyen pour obtenir que le important_stuff partie d'une chaîne comme ceci:Obtenez la chaîne après une chaîne à partir d'une chaîne

bla-bla_delimiter_important_stuff 

_delimiter_ est toujours là, mais le reste de la chaîne peut changer .

+1

semble être une certaine confusion sur si les traits de soulignement sont littéralement là ou non. toutes les solutions ci-dessous sont bonnes. –

+0

Vous pourriez trouver ['s ($ str) -> afterFirst ('_delimiter_')'] (https://github.com/delight-im/PHP-Str/blob/8fd0c608d5496d43adaa899642c1cce047e076dc/src/Str.php#L435) ou ['s ($ str) -> afterLast ('_delimiter_')'] (https://github.com/delight-im/PHP-Str/blob/8fd0c608d5496d43adaa899642c1cce047e076dc/src/Str.php#L445) utile, comme trouvé dans [cette bibliothèque autonome] (https://github.com/delight-im/PHP-Str). – caw

Répondre

54

ici:

$arr = explode('delimeter', $initialString); 
$important = $arr[1]; 
+1

Simple et efficace, bonne réponse. – jsims281

+6

En PHP 5.4 ... pour ce cas en particulier ... vous pouvez faire la ligne suivante ... '$ important = exploser (" délimiteur ", $ initialString) [1];' – zgr024

+5

3 applaudissements pour le déréférencement! = D –

4
$string = "bla-bla_delimiter_important_stuff"; 
list($junk,$important_stufF) = explode("_delimiter_",$string); 

echo $important_stuff; 
> important_stuff 
+2

J'aime l'utilisation de la liste. quand vous avez d'abord eu array je pensais que vous m'aviez montré une capacité de PHP comme je ne savais pas! –

+0

cool. merci :) – Alex

6
 
$importantStuff = array_pop(explode('_delimiter_', $string)); 
+1

Cela va lancer une erreur 'E_STRICT' (' Strict Standards: seules les variables doivent être transmises par référence') car array_pop utilise la référence, mais cela fonctionne toujours. –

30
$result = end(explode('_delimiter_', 'bla-bla_delimiter_important_stuff')); 
+0

Solution très intelligente. – andcl

+1

Cela lancera: Normes strictes: Seules les variables doivent être transmises par référence. Vous devez assigner le explode() à un var temp. –

4

J'aime cette méthode:

$str="bla-bla_delimiter_important_stuff"; 
$del="_delimiter_"; 
$pos=strpos($str, $del); 

coupe de fin du délimiteur à la fin de chaîne

$important=substr($str, $pos+strlen($del)-1, strlen($str)-1); 

Note:

1) pour substr le début de chaîne à '0' alors que pour strpos & strlen prend la taille de la chaîne (commence à '1')

2) en utilisant 1 delimiter de caractère peut-être une bonne idée

Questions connexes