2009-06-22 4 views
0

Je veux diviser une chaîne en deux parties, la chaîne est le texte presque libre, par exemple:En utilisant preg_split pour aller de « salut comment allez-vous » à [Salut, comment vas-tu]

$string = 'hi how are you'; 

et je veux la scission ressembler à ceci:

array(
    [0] => hi 
    [1] => how are you 
) 

J'ai essayé d'utiliser cette regex: /(\S*)\s*(\.*)/ mais même lorsque le tableau retourné est la bonne taille, les valeurs vient vide.

Quel devrait être le modèle nécessaire pour que cela fonctionne?

Répondre

5

Quelles sont les exigences? Votre exemple semble assez arbitraire. Si tout ce que vous voulez est de diviser le premier espace et laisser le reste de la chaîne seule, ce serait le faire, en utilisant explode:

$pieces = explode(' ', 'hi how are you', 2); 

qui dit essentiellement « split sur les espaces et limiter le tableau résultant 2 éléments "

+1

1 - I * haine * l'utilisation des expressions rationnelles quand ils sont tout simplement pas nécessaire. – karim79

+2

C'est un super nom pour une fonction. Je souhaite que Java a eu une explosion(). –

+0

@ karim79: Je déteste ça aussi ... @Paolo Bergantino: merci, c'est exactement mon exigence. – Cesar

0

Vous ne devriez pas échapper le". " dans le dernier groupe. Vous essayez de faire correspondre n'importe quel personnage, pas une période littérale.

Correction: /(\S*)\s*(.*)/

Questions connexes