Trouver plusieurs caractères dans une chaine

Résolu/Fermé
jiantox Messages postés 1081 Date d'inscription mardi 30 septembre 2008 Statut Membre Dernière intervention 26 janvier 2019 - 30 mai 2012 à 10:47
jiantox Messages postés 1081 Date d'inscription mardi 30 septembre 2008 Statut Membre Dernière intervention 26 janvier 2019 - 30 mai 2012 à 19:43
Bonjour,

voilà j'ai une chaine simple remplie de caractères, dans celle-ci j'ai des balises [ url ] .. [ /url ][ i ] .. [ /i ] ( sans les espaces dans les crochets ).

j'ai commencé un petit script pour récupérer le contenu des crochets, hors ça ne récupère que le 1er crochet.

comment faire pour que le script "boucle" dans ma chaine et s'execute pour chaque crochets qu'il rencontre ?

function url($texte) {
$mdeb1 = "[";
$deb1 = strpos( $texte, $mdeb1 ) + strlen( $mdeb1 );
$mfin1 = "]";
$fin1 = strpos( $texte, $mfin1 );
$caracoi = substr( $texte, $deb1, $fin1 - $deb1 );
return $caracoi;
}

$texte = '[ url ]test[ /url ] - [ i ]test[ /i ]'; ( toujours sans espaces )
echo url($texte); // ne retourne que "url"
A voir également:

2 réponses

tryan44 Messages postés 1288 Date d'inscription mardi 24 janvier 2012 Statut Membre Dernière intervention 26 octobre 2014 219
30 mai 2012 à 13:36
Salut,

Peut avec une boucle foreach avant le return

foreach($caracoi AS $texte){
...
0
jiantox Messages postés 1081 Date d'inscription mardi 30 septembre 2008 Statut Membre Dernière intervention 26 janvier 2019 114
30 mai 2012 à 17:54
Merci, malheureusement la fonction foreach() ne passe que pour des variables en tableau, ce qui n'est pas le cas de la mienne :/ du coup j'ai un message d'erreur logique :

Invalid argument supplied for foreach().

Peut être faudrait-il passer par une fonction qui lit mot par mot et du coup faire un while sur chaque mot pour la vérification ?..

je sèche un peu ^^
0
jiantox Messages postés 1081 Date d'inscription mardi 30 septembre 2008 Statut Membre Dernière intervention 26 janvier 2019 114
30 mai 2012 à 19:43
J'ai résolu mon souci en utilisant une autre technique

avant j'avais [ url ]test.truc.com[ /url ]
du coup il me fallait une fonction pour repérer et récupérer [ url ] $variable [ /url ]
et ça posais problème parce qu'il ne m'en récupérais qu'un seul.

Du coup j'ai fais comme ceci :
[.url http://truc.test.com/ url.]Nom du lien[ /url ]
et avec une petite fonction je remplace directement [.url par <a href=" .url] par "> et [ /url ] par </a>

Moin compliqué et ça me le change directement dans toute la variable sans boucler ^^

Merci quand meme
0