begin process at 2010 02 09 19:46:44
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive PHP

 > 

Archives

 > 

AU SECOURS !!!

 > 

Expression reguliere


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Expression reguliere

lundi 3 octobre 2005 à 00:13:18 | Expression reguliere

pioug70

Bonjour,
Je suis null en expression reguliere je cherche a faire simplement cela
Dans une variable contenant un fichier html je veux resortir un tableau.
Le tableau doit contenir les informations contenues entre 2 balises

<mabalisetoto> mon texte <mabalisey> 
<mabalisetoto> mon autre texte <unebalise> <mabalisey>
<une balise au hasard>
<mabalisetoto> mon texte autre <mabalisey> 

la fonction qui marche PAS
function getInfo($deb, $fin, $page) {
        $retour = array ();
        $pregs = "";     
        preg_match_all("#$deb(.*)$fin#", $page, $pregs);

        foreach ($pregs[0] as $pr) {
            $retour = array_merge($retour, $pr);
        }
        return $retour;
    }
et j'aimerai qu'elle me retourne:un tableau contenant:
$retour[0]  ->  mon texte
$retour[1]  ->  mon autre texte
$retour[2]  ->  mon texte autre
au lieu de
$retour[0] -> mon texte mon autre texte mon texte autre

Merci de votre reponse ca fait deja 1/2 journee que je cherche
lundi 3 octobre 2005 à 00:16:20 | Re : Expression reguliere

pioug70

Oups j'ai oubli j'appel la fonction getinfo avec les param suivant:
$page=fread(fopen("fic.test", "r"), filesize("fic.test"));
$this->getInfo('<mabalisetoto>', '<mabalisey>', $page);

fic.test


<mabalisetoto> mon texte <mabalisey>
<mabalisetoto> mon autre texte <unebalise> <mabalisey>
<une balise au hasard>
<mabalisetoto> mon texte autre <mabalisey> 

lundi 3 octobre 2005 à 00:21:58 | Re : Expression reguliere

J_G

Salut,

function getInfo($deb, $fin, $page) {
        $retour = array ();
        $pregs = array();     
        preg_match_all("#$deb(.*)$fin#", $page, $pregs);

        foreach ($pregs[0] as $pr) {
            $retour = array_merge($retour, $pr);
        }
        return $retour;
    }

Puis si c'est pas mieux, change tes délimiteur en / ou | ou @
(ce sont des délimiteurs que j'ai plus souvent croisés que #... )

A part ça, ton masque de recherche à l'air tout fait "tip-top" :)

lundi 3 octobre 2005 à 00:26:13 | Re : Expression reguliere

J_G

Aaaaaaaah merci de préciser comment tu appel la fonction !!!


$page = file_get_contents( $filename);


preg_match cherche dans une chaine de caractère, pas dans une "ressource fichier"...
Et puis, au cas où il y'ait un saut de ligne entre tes balises toto et tata :
$page = str_replace("\n","",file_get_contents( $filename));


lundi 3 octobre 2005 à 10:55:37 | Re : Expression reguliere

pioug70

he he ben c ca mon probleme c que j'ai fais un str_replace("\n","",file_get_contents( $filename));  et ben la l'expression reguliere fonctionne pas!!! elle me ressort toute la ligne il faudrai que je rajoute dans l'expression de ressortir des qu'elle trouve la variable $fin!
lundi 3 octobre 2005 à 11:04:48 | Re : Expression reguliere

pioug70

Réponse acceptée !
<?php
class Test {

    function Test() {
        $page = fread(fopen("test.data", "r"), filesize("test.data"));
        $page = $this->cleanPage($page);
        $infos = $this->getInfo('<mabalisetoto>', '<mabalisey>', $page);
        foreach ($infos as $info) {
            echo "<br>".$info."\n";
        }
    }
    function getInfo($deb, $fin, $page) {
        $retour = array ();
        $pregs = "";
        $lendeb = strlen($deb);
        $lenfin = strlen($fin);
        preg_match_all("|$deb(.*)$fin|U", $page, $pregs);
        foreach ($pregs[0] as $pr) {
            $retour = array_merge($retour, $pr);
        }
        return $retour;
    }
    function cleanPage($page) {
        $page = str_replace(CHR(10), "", $page);
        $page = str_replace(CHR(13), "", $page);
        return $page;
    }
}

$Test = new Test();
?>
lundi 3 octobre 2005 à 11:08:53 | Re : Expression reguliere

J_G

A mon avis, tu te gourre... t'as foncin fonctionne mais tu l'utilise mal :(

Au lieu de ça :
foreach ($pregs[0] as $pr) {
            $retour = array_merge($retour, $pr);
        }


Fait plutôt ça :
echo nl2br(r_print($pregs,true));

Histoire de voir ce que te ressort réellement le preg_match_all. Car je crois que dans le premier élément du tableau ressorti, il y'a toute la chaine :)




Cette discussion est classée dans : texte, tableau, expression, retour, reguliere


Répondre à ce message

Sujets en rapport avec ce message

expression reguliere [ par Rochon ] Avec les expressions regulière je voudrait que tout les mots print et if qui sont entre des balises et soient surlignés:j'utilisent: $t retour à la ligne [ par refkaben ] bonjour tout le monde.J'ai un problème d'affichage d'une cellule.             &nbs Expressions régulières pour la suppression de balises [ par f6xara ] J'ai fait un module de template transformant tout ce qui se trouve entre {} par la variable équivalente.Si la variable n'est pas trouvées, alors, on s Texte dynamique + tableau [ par atchoumen ] Bonjour,je suis actuellement en train de taffer sur un projet et je me retrouve face à un problème auxquelle je n'ai actuellement pas trouvé de soluti Retour à la Ligne flash4 [ par Jeromedab ] Salut !J'ai un petit problème avec un scroll de texte (flash 4).Je ne sais pas quelle balise incorporer à mon texte pour faire un retour à la ligne. L fichier texte [ par g_marvin ] bonjourj'ai un fichier txt toto titi titi toto toto toto titi et je dispose aussi d'un tableau a <P expression reguliere fort hardue! [ par hansap ] voila, ca fait un moment que j'essaie de resoudre ce probleme, j'ai posté dans plusieurs forums, mias mon post le plus complet se trouve ici : <A href Debutant : Remplacements avec expression reguliere ? [ par napo7 ] Salut,j'ai lu deux trois cours sur les expression regulieres, mais il me manque des elements pour reussir a venir à bout de mon challenge !Il faut en Retour à la ligne [ par Bowlest ] Bonjour, Mon problème est tout simple: <br expression reguliere pour balise HTML [ par nezdeboeuf62 ] Bonjour tout le monde,Voila j'aurais voulu savoir si quelqu'un connaissait une regexp pour decrire une balise HTML. En fait plus précisément il m'en f


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,437 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales