Chaîne de caractères

whichgirl0909 Messages postés 6 Date d'inscription mercredi 24 mai 2006 Statut Membre Dernière intervention 13 juillet 2007 - 10 juil. 2007 à 14:05
whichgirl0909 Messages postés 6 Date d'inscription mercredi 24 mai 2006 Statut Membre Dernière intervention 13 juillet 2007 - 11 juil. 2007 à 08:54
Bonjour,

Je suis actuellement en train de travailler sur un projet, et je me heurte à un problème :

J'ai une variable qui contient :

[ javascript:window_popup('../../rep1/rep2/pdf/fichier1.pdf)">Test]

[
javascript:window_popup(''../../repository/editeur/pdf/fichier2.pdf') Test2]

et voila mon problème : il faudrait que j'arrive a récupérer les 2 liens vers les fichiers pdf donc :
    ../../rep1/rep2/pdf/fichier1.pdf
     ../../repository/editeur/pdf/fichier2.pdf

Mais je rencontre un problème, grâce à
    $lalongueur=strlen($contenu);
    $positiondepart= strpos($contenu,"'");
    $portiondemandee=substr($contenu,$positiondepart+1,$lalongueur);

 j'arrive a récupérer tout ça : 

../../rep1/rep2/pdf/fichier1.pdf)">Test

[javascript:window_popup(''../../repository/editeur/pdf/fichier2.pdf'') Test2]


mais après je n'arrive pas a couper ma chaîne de façon a ce qu'elle ne contienne que le premier lien, et surtout après je ne vois pas trop comment faire une boucle ou quelque chose d'autre qui me permettrait de récupérer également le lien du 2ème fichier

Si quelqu'un a une idée...

Merci

3 réponses

J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
10 juil. 2007 à 14:36
Salut,

Ca, c'est un travail pour les expressions régulières !

<?php
$reg = "!window_popup\('([^']+)'\)!is";
if ( preg_match_all ( $reg, $ta_variable, $res ) ) {
print_r ( $res[1] );
}
else {
echo <<<TXT
Mon expression régulière a échouée...
Rends-toi sur http://www.php.net/preg-match-all
pour construire toi même la bonne expression

A+
TXT;
}
0
DiGhan Messages postés 239 Date d'inscription samedi 21 février 2004 Statut Membre Dernière intervention 3 juin 2010 1
10 juil. 2007 à 15:12
Hello,

oui, il faut utiliser les regex, un exemple :

<?php
     $string stripslashes($_POST['code']);  // chaine contenue dans une zone de saisie (textarea, pour les tests) avec name code
     $pattern = '#window_popup\(\'(.*?)\'\)#i';
     preg_match_all($pattern, $string, $matches, PREG_SET_ORDER);
     echo '',print_r($matches),'

';
     // résultats disponibles à $matches[$i][1], avec $i utilisé comme compteur classique

?>

Une dernière petite chose, soit rigoureux dans l'ecriture de tes liens puisque dans le 2nd (dans ton exemple), il y a une double quote (risque de mauvaise capture).
0
whichgirl0909 Messages postés 6 Date d'inscription mercredi 24 mai 2006 Statut Membre Dernière intervention 13 juillet 2007
11 juil. 2007 à 08:54
Merci à tous les deux,

J'ai bien résolut mon problème grâce aux expressions régulières :

 $string = ereg_replace("javascript:window_popup\(\'", $debut, $string);
 $string = ereg_replace("\'\)", $fin, $string);

J'ai pu remplacé ce que je ne voulais pas grâce à l'expression régulière ereg_replace

Merci
0
Rejoignez-nous