2009-04-03 11 views
1

J'ai la chaîne suivante que je dois diviser.Diviser la chaîne en parties PHP

$string = "This is string sample - $2565"; 
$split_point = " - "; 

One: Je dois être en mesure de diviser la chaîne en deux parties en utilisant une expression régulière ou tout autre match et indiquer où va diviser.

Deuxième: Vous voulez également faire un preg_match pour $, puis seulement saisir le nombre sur la droite de $.

Des suggestions?

Répondre

6
$split_string = explode($split_point, $string); 

et

preg_match('/\$(\d*)/', $split_string[1], $matches); 
$amount = $matches[1]; 

Si vous voulez, cela pourrait tout être fait en une seule expression rationnelle:

$pattern = '/^(.*)'.preg_quote($split_point).'\$(\d*)$/' 

preg_match($pattern, $string, $matches); 
$description = $matches[1]; 
$amount = $matches[2]; 
+0

S'il vous plaît Pour éviter les erreurs inattendues, ajoutez preg_quote autour du $ split_point dans l'exemple de regex. – Willem

1
$parts = explode ($split_point, $string); 
/* 
$parts[0] = 'This is string sample' 
$parts[1] = '$2565' 
*/ 
1

Deux autres réponses ont mentionné explode(), mais vous pouvez aussi Limitez le nombre de parties dans lesquelles vous voulez diviser votre chaîne source. Par exemple:

$s = "This is - my - string."; 
list($head, $tail) = explode(' - ', $s, 2); 
echo "Head is '$head' and tail is '$tail'\n"; 

Est-ce que vous a donné:

Head is 'This is' and tail is 'my - string.' 
+0

N'est pas la sortie: Head est 'This is-' et tail est 'my-string'. ? – Codex73

+0

Non, certainement pas. J'ai même vérifié dans le PHP REPL avant de poster. –

+0

alors qu'est-ce qui est arrivé à la première -? – Codex73

0

explode est la bonne solution pour votre cas spécifique, mais preg_split est ce que vous voulez si vous avez besoin d'expressions régulières pour le séparateur

Questions connexes