Extraire chaine de caractère
Résolu
Diogon
Messages postés
164
Date d'inscription
Statut
Membre
Dernière intervention
-
Diogon Messages postés 164 Date d'inscription Statut Membre Dernière intervention -
Diogon Messages postés 164 Date d'inscription Statut Membre Dernière intervention -
Salut la compagnie,
voilà, en fait j'aimerais extraire (en php) dans un tableau tous les passages compris entre [id] et [/] d'une chaine de caractères...
J'ai essayé avec preg_match_all mais toute ce qu'il me retourne c'est "array" soit un tableau vide. Pourtant il y a au moins quatre extraits de ce type dans la chaine de caractères que j'encode...
Voici mon code (en simplifié, ma chaine est appelée plus haut):
merci d'avance à tous
voilà, en fait j'aimerais extraire (en php) dans un tableau tous les passages compris entre [id] et [/] d'une chaine de caractères...
J'ai essayé avec preg_match_all mais toute ce qu'il me retourne c'est "array" soit un tableau vide. Pourtant il y a au moins quatre extraits de ce type dans la chaine de caractères que j'encode...
Voici mon code (en simplifié, ma chaine est appelée plus haut):
function extr($chaine){ $pattern = '/[id](.*)[/]/'; preg_match_all($pattern, $chaine, $matches); echo $matches; }
merci d'avance à tous
A voir également:
- Extraire chaine de caractère
- Caractère ascii - Guide
- Extraire une video youtube - Guide
- Caractère spéciaux - Guide
- Caractere speciaux - Guide
- Extraire le son d'une vidéo - Guide
8 réponses
Souhaites-tu extraire les passages compris :
1/ entre la chaine de caractères "[id]" et la chaine de caractères "[/]",
2/ ou entre l'un des carcatères "i" ou "d", et le caractère "/" ?
Si la réponce est 1/, il y a une erreur de syntaxe dans ton expression régulière : Les caractères "[", "]", et "/" sont des caractères spéciaux. Il faut les faire précéder d'un antislash lorsque tu souhaites les utiliser comme caractères normaux.
Remplacer : $pattern = '/[id](.*)[/]/';
Par : $pattern = '/\[id\](.*)\[\/\]/';
Plus d'info : http://www.commentcamarche.net/contents/javascript/jsregexp.php3
1/ entre la chaine de caractères "[id]" et la chaine de caractères "[/]",
2/ ou entre l'un des carcatères "i" ou "d", et le caractère "/" ?
Si la réponce est 1/, il y a une erreur de syntaxe dans ton expression régulière : Les caractères "[", "]", et "/" sont des caractères spéciaux. Il faut les faire précéder d'un antislash lorsque tu souhaites les utiliser comme caractères normaux.
Remplacer : $pattern = '/[id](.*)[/]/';
Par : $pattern = '/\[id\](.*)\[\/\]/';
Plus d'info : http://www.commentcamarche.net/contents/javascript/jsregexp.php3
je ne comprends pas très bien, il me semblait que extract prenait des données au sein d'un tableau? Ce que j'essaie de faire c'est au contraire de mettre des extrait de ma chaine de caractère dans un tableau
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question<?php $chaine = 'tata[id]toto1[/]tata[id]toto2[/]tata[id]toto3[/]tata[id]toto4[/]tata'; $pattern = '/\[id\]([^[]*)\[\/\]/'; preg_match_all($pattern, $chaine, $matches); echo $matches[0][0].'<br>'; // [id]toto1[/] echo $matches[0][1].'<br>'; // [id]toto2[/] echo $matches[0][2].'<br>'; // [id]toto3[/] echo $matches[0][3].'<br>'; // [id]toto4[/] echo $matches[1][0].'<br>'; // toto1 echo $matches[1][1].'<br>'; // toto2 echo $matches[1][2].'<br>'; // toto3 echo $matches[1][3].'<br>'; // toto4 ?>