Aller au contenu

Imp

Actif
  • Compteur de contenus

    24
  • Inscrit(e) le

  • Dernière visite

Réputation sur la communauté

0 Neutre
  1. Tout d'abord je te remercie Sarc, avec beaucoup de retard, pour ta réponse Alors j'ai testé les trois méthodes avec un fichier contenant 10 000 fois la ligne "c'est <i>toto</i> le héros et <i>tata</i> la belle" (test en local sur un ordi peu puissant avec PHP 5) méthode 1 #!/usr/bin/php <? $texte = file_get_contents("/home/moi/test.txt"); if(preg_match_all("|<i>([^<]*)</i>|",$texte,$out,PREG_SET_ORDER )) { if(is_array($out)) { foreach($out as $tab_ch) { $tag=$tab_ch[0]; $mot=$tab_ch[1]; $mot_remplace=str_replace(array("o","a"),"i",$mot); $tag_remplace=str_replace($mot,$mot_remplace,$tag); $texte=str_replace($tag,$tag_remplace,$texte); } } } ?> time : real 1m50.537s user 1m28.810s sys 0m11.309s méthode 2 #!/usr/bin/php <? $texte = file_get_contents("/home/moi/test.txt"); $texte = preg_replace("#(<i>.+?</i>)#e", "(str_replace(array('o','a'),'i', '$1'))",$texte); ?> time : real 0m0.688s user 0m0.644s sys 0m0.028s méthode 3 #!/usr/bin/php <? $texte = file_get_contents("/home/moi/test.txt"); function remplace($texte) { return str_replace(array('o','a'),'i', $texte[1]); } $texte = preg_replace_callback("#(<i>.+?</i>)#", remplace, $texte); ?> time : real 0m0.245s user 0m0.220s sys 0m0.024s Donc la différence est assez nette : avec la première méthode, j'avais le temps d'aller boire un café, la seconde avec preg_replace et le modificateur e est deux à trois fois plus lente que la troisième avec preg_replace_callback. Concernant le deuxième exemple, avec preg_replace, j'obtiens un résultat un peu plus rapide avec "preg_replace('@[ao]@', 'i', ..." au lien de "str_replace(array('o','a'), 'i'" Donc au final la dernière avec preg_replace_callback est bien le mieux, merci sarc !
  2. Imp

    Php et curl

    Bon finalement je suis arrivé à avoir le bon résultat (et sans passer par un fichier) : <?php $c = curl_init($url); curl_setopt($c, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($c, CURLOPT_HEADER, 1); curl_setopt($c, CURLOPT_RETURNTRANSFER, 1); $headers = curl_exec($c); curl_close($c); preg_match('/.*^Set-Cookie: ([^;]+)/sm',$headers,$cookie); $c = curl_init($url); curl_setopt($c, CURLOPT_RETURNTRANSFER, 1); curl_setopt($c, CURLOPT_COOKIE, $cookie[1]); $page = curl_exec($c); curl_close($c); ?> Si je reprends le shell_exec avec une syntaxe condensée et en utilisant un tube au lieu d'un fichier, ça peut se résumer à ça : $page=shell_exec("curl -sLD - $url | curl -sb - $url"); Vu qu'il faut écrire dix fois plus de code en "pur" php, je crois que je vais en rester à shell_exec. Le but est de me fabriquer mes propres flux rss.
  3. Imp

    Php et curl

    Le premier sert à créer le fichier cookies.txt dont la deuxième commande à besoin pour que je récupère le bon contenu. Mais c'est vrai que je pourrais faire la même chose en une fois : $page=shell_exec('curl -D '.$cookies.' -L "'.$url.'"; curl -s -b '.$cookies.' -L "'.$url.'"'); Le problème ? Bah je trouve ça compliqué. Déjà pour trouver les options vraiment équivalentes. L'option -b ne semble pas correspondre exactement à CURLOPT_COOKIEFILE , car avec le code suivant : <?php $url="http://www.canalplus.fr/c-humour/pid2053-c-encore-de-rire.html?catId=682"; $cookies="/tmp/cookies.txt"; $a = curl_init ($url); $header_file = fopen ($cookies, "w"); curl_setopt ($a, CURLOPT_WRITEHEADER, $header_file); curl_setopt($a, CURLOPT_FOLLOWLOCATION, 1); curl_exec ($a); curl_close($a); $b = curl_init ($url); curl_setopt($b, CURLOPT_COOKIEFILE, $cookies); curl_setopt($b, CURLOPT_FOLLOWLOCATION, 1); $page = curl_exec($b); curl_close($b); ?> le fichier cookies.txt (qui en fait contient les entêtes HTTP) est correct (identique qu'avec -D), mais apparemment ce n'est pas bien exploité comme avec -b car je n'obtiens pas le bon résultat (normalement le contenu de $page doit-être la page de la vidéo de stéphane Guillon, et quand ce n'est pas bon, c'est Thomas Ngijol) Je vais plutôt regarder du côté de cookie-jar...
  4. Imp

    Php et curl

    Bonjour J'ai besoin d'utiliser curl ou wget pour récupérer le contenu d'un page web dans une variable (à cause d'une histoire de cookie) Pour l'instant j'utilise ceci (qui fonctionne bien) : <?php $url="http://www.canalplus.fr/c-humour/pid2053-c-encore-de-rire.html?catId=682"; $cookies="/tmp/cookies.txt"; shell_exec('curl -D '.$cookies.' -L "'.$url.'"'); $page=shell_exec('curl -s -b '.$cookies.' -L "'.$url.'"'); ?> Mais j'ai du mal à faire l'équivalent en code purement PHP (qui m'a l'air bien plus compliqué !!), sans passer par shell. http://fr.php.net/curl Est-ce que quelqu'un pourrait m'aider à le faire ? Sinon est-ce qu'il y a une réelle différence en terme de rapidité en passant par shell_exec ou ça n'a guère d'importance ? Merci d'avance
  5. Salut Je remonte ce vieux sujet car que j'ai mis à jour FCKeditor à la version 2.5 (sortie il y a environ 2 semaines seulement) et maintenant il y possibilité de ne plus avoir de balises <font> (c'est d'ailleurs paramétré comme cela par défaut, mais ça peut se changer). Donc c'est parfait ! J'en profite pour remercier Dudu de sa réponse. Je ne sais pas si je ne l'avais pas vu à l'époque ou si j'avais oublié de répondre, désolé !
  6. Imp

    Substitution et variables

    Merci pour l'explication Dan. Sinon j'ai trouvé une solution (un peu par hasard...) pour mon premier exemple. Ça va bien en utilisant le modificateur "e" Donc ceci fonctionne : $titre="hello {5}"; $d[5]="world"; echo preg_replace('/{([0-9]+)}/e', '$d[\\1]', $titre); De même en remplaçant le \\1 par $1, ça marche aussi. En revanche si j'enlève les simple quotes ou que je mets à la place de double quotes, ça ne va plus. Ça me laisse un peu perplexe. Infos sur le modificateur "e" :
  7. Imp

    Substitution et variables

    voici un autre exemple, sans preg_replace Avec le code suivant ; $d[2]="salut"; $n="2"; echo $d[$n]; ça fonctionne parfaitement. J'obtiens bien "salut" en revanche celui-ci ne fonctionne pas du tout : $d[2]="salut"; function essai($n) { return $d[$n]; } echo essai(2); rien du tout... Bizarre ou logique ?
  8. Imp

    Substitution et variables

    Bonjour ! Soit les variables suivantes : $titre="hello {5}"; $d[5]="world"; je voudrais remplacer le "{n}" (ici n=5) par "$d[n]" en utilisant preg_replace ou ereg_replace... mais sans succès Avec echo preg_replace("/{([0-9]+)}/", $d[$1], $titre); ou echo preg_replace("/{([0-9]+)}/", $d[\\1], $titre); j'aimerais bien obtenir mon "hello world" :-( ! Est-ce qu'il y aurait un truc ?
  9. Merci beaucoup klerthis, c'est ce qu'il me fallait
  10. Resalut, Est-ce au moins possible ? Par exemple : $texte = "c'est <i>toto</i> le héros" Est-ce qu'il y a un moyen de remplacer tous les "o" par des "i", mais seulement entre <i> et </i> de sorte que le résultat soit "c'est <i>titi</i> le héros" Y aurait-il un moyen ? Merci d'avance
  11. Bonjour, Je voudrais remplacer toutes les virgules par des virgules suivies d'un saut de ligne (str_replace(",", ",\n", $texte);) Mais ceci non dans tout $texte, mais seulement pour ce qui se trouve entre les balises <pre> et </pre> de ce $texte Et là je galère... Merci à qui me donnera un peu d'aide
  12. merci beaucoup Leonick, j'ai pigé le principe et ça marche impecc !
  13. Bonjour, Je souhaite pouvoir répurérer un lien dans le code source des pages Dailymotion, lien qui varie donc selon les page. Voici un exemple, c'est le premier lien ici : so.addVariable("url", "http%3A%2F%2Fwww.dailymotion.com%2Fget%2F802%2F320x240%2Fflv%2F675988.flv%3Fkey%3Dff24801b6edf5ced2ebb87e58e22815e128b3e9"); so.addVariable("prevURL", "http://www.dailymotion.com/search/mandriva/video/xhz24_linux-kde-35-demonstration"); Le lien qui m'intéresse commence toujours pareil (http%3A%2F%2Fwww.dailymotion.com%2Fget%2F), j'arrive donc facilement à la cibler le début avec Eregi, mais là où ça ne va plus, c'est pour délimiter la fin ! Impossible de le faire arrêter au guillement ou à la parenthèse. Et si je mets cela $lien = eregi("http%3A%2F%2Fwww.dailymotion.com%2Fget%2F(.+)so.addVariable",$page,$regs); ça ne s'arrête même pas au "so.addVariable" mais ça ajoute toute la ligne ! Merci d'avance.
  14. Bonjour, FCKeditor n'est pas un CMS mais comme il est notamment utilisé par des CMS et que je ne savais pas trop où poster, allons y : Y a t'il un moyen, un fichier à modifier, pour qu'au lieu d'utiser la balise <font> ça insère directement un <span style"">. Je sais qu'on peut récupérer ça par PHP, mais je voudrais le faire directement. J'ai un peu fouillé les fichiers mais en vain ! Merci d'avance.
  15. Merci.. j'ai un peu honte car je ne savais même pas qu'on pouvait ainsi mettre plusieurs paramètres de tri !
×
×
  • Créer...