Multi balises dans REGEX dans preg_match_all

stagiaire_titn
Invité n'ayant pas de compte PHPfrance

10 juin 2008, 12:13

Bonjour,
Je suis actuellement en stage en entreprise, et j'ai été autorisé à demander de l'aide sur ce forum :

Savez vous comment je doit faire dans mon REGEX afin qu'il selectionne n'importe quel texte entre [ php] et
[php /]
et entre [ html] et [ /html]

J'ai réussi à faite ça :
//-->> Détect entre [php] et 
AND
 et 
$masque = ('`\['.$php_balise.'](.+?)\[/'.$php_balise.']`si');
[/php]

J'ai raté à faire ça :
//-->> Détect entre [php] et 
AND
 et 
$masque = "(\
(.*)\
)(\
(.*)\
)";
[/php]

Et faut que sa fonctionne avec autant de balises que j'en aurai besoin...

Merci...

stagiaire_titn
Invité n'ayant pas de compte PHPfrance

10 juin 2008, 21:13

Même avec un OR... je prend c'est urgent


Merci :oops:

Mammouth du PHP | 514 Messages

11 juin 2008, 01:05

Ce que tu peux faire, c'est démarrer la lecture de ton fichier, puis si tu trouves ta balises php, tu incrémentes un tableau $php, et tu arrêtes d'incrémenter quand tu croises la balise fermante ...

Moins chiant que les regexp, que je n'encaisse pas.

stagaire_titn
Invité n'ayant pas de compte PHPfrance

11 juin 2008, 11:09

Merci à toi, mais comment faire celà ?

ViPHP
ViPHP | 4039 Messages

11 juin 2008, 12:21

moi j'opterais simplement pour des lookahead et des lookbehind. Le souci ça va être quand il y en aura plusieurs dans un même bloc de texte.. doit y avoir un paramètre pour ne pas le rendre avare.
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

ViPHP
ViPHP | 1380 Messages

11 juin 2008, 12:33

Pourrais-tu donner un échantillon des cas possibles et de l'extraction souhaitée? Ça permettra de gagner du temps et quelques posts aller-retour.
ripat

stagiaire_titn
Invité n'ayant pas de compte PHPfrance

12 juin 2008, 14:26

[ php][ /php]
[JAVASCRIPT][/JAVASCRIPT]
... autant que l'on veut...

Eléphant du PHP | 139 Messages

12 juin 2008, 14:51

moi je ferais ca en strpos ...

avec un strpos, tu récuperes la position du
un autre strpos, tu récuperes [ /php]
et apres un substr pour récupérer la chaine

ViPHP
ViPHP | 1380 Messages

12 juin 2008, 15:58

[ php][ /php]
[JAVASCRIPT][/JAVASCRIPT]
... autant que l'on veut...
Balises imbriquées possibles?

Code : Tout sélectionner

[HTML]klqk mlksmlk klklqk m [JAVASCRIPT]klzk lklzdkl lk dlk [/JAVASCRIPT] kjkaj kjakj akj [/HTML]
ripat

stagiaire_titn
Invité n'ayant pas de compte PHPfrance

13 juin 2008, 00:20

oui, balise imbriquer (si fermé correctement)

stagiaire_titn
Invité n'ayant pas de compte PHPfrance

13 juin 2008, 00:31

Comme ça mais sa les affiches séparément !!
<?php
$source = "
[php]	1 php 
	2 php 
	3 html
	4 php 
	5 php 
	6 html
	7 html
	8 html
	9 html
";

function etape1($source,$balise_1,$balise_1,$balise_2)
{
preg_match_all('`\['.$balise_2.'](.+?)\[/'.$balise_1.']`si', $source, $resultat);
$nombre_resultat = count($resultat[1]); //-->> 4
$i = $nombre_resultat; //-->> 4
while($i>0)
{
$i--;
$code = ''.$code.'> '.$resultat[1][$i].'</br>';
}

return $code;
}

echo etape1($source,php,html,javascript);

?>
[/php]

:?: :?: :?: :?: :?: :?:

donne :

Code : Tout sélectionner

> 5 php > 4 php > 2 php > 1 php > 9 html > 8 html > 7 html > 6 html > 3 html
:?:

stagiaire_titn
Invité n'ayant pas de compte PHPfrance

14 juin 2008, 21:20

Bon mon stage est fini, je n'est pas pu le faire... tempi... j'ai eu 16/20 :cry: :cry: :cry: :cry: :cry:

juste comme ça, est-ce possible ?

Merci quand même :cry: