2017-08-21 5 views
1

je chaîne similaire à ceCoupe une chaîne en barre oblique mais ignorer le < dans la chaîne

word1/word2/word3/<b>word3</b> 

Je veux exploser cette chaîne par barre oblique. Alors que je peux obtenir le résultat suivant.

Array = (
[0] => 'word1', 
[1] => 'word2', 
[2] => 'word3', 
[3] => '<b>word3</b>' 
); 

Mais je ne parviens pas à obtenir le résultat ci-dessus. Au lieu de cela, je reçois le résultat suivant

Array = (
    [0] => 'word1', 
    [1] => 'word2', 
    [2] => 'word3', 
    [3] => '<b>word3<', 
    [4] => 'b>' 
    ); 

Quelle expression régulière dois-je utiliser pour cela utiliser la fonction preg_split pour atteindre les résultats escomptés?

Répondre

2

Avec fonction preg_split et le modèle de regex spécifique:

$s = 'word1/word2/word3/<b>word3</b>'; 
$result = preg_split('~(?<!<)/~', $s); 
print_r($result); 
  • ~ - traité comme séparateur d'expression regex

  • (?<!<)/ - assertion de test arrière négatif, assure que la barre oblique / n'a pas été précédée par <

La sortie:

Array 
(
    [0] => word1 
    [1] => word2 
    [2] => word3 
    [3] => <b>word3</b> 
)