IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[curl] Lien relatif vers lien absolue


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2011
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2011
    Messages : 52
    Points : 52
    Points
    52
    Par défaut [curl] Lien relatif vers lien absolue
    Bonjour, je récupère des pages de plusieurs sites différents et j'aimerais savoir comment remplacer les liens des images ou autres lien par leurs liens en absolue, est ce que curl as une fonction pour le faire ? ou est ce que je dois utiliser preg_replace avec une regex ? si c'est avec une regex laquelle ? car la mienne ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_replace('#(href|src)="([^(http)])#i','$1="'.dirname($_POST['url']).'$2$3',$return)

  2. #2
    Membre habitué
    Inscrit en
    Mai 2008
    Messages
    317
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 317
    Points : 135
    Points
    135
    Par défaut
    Ah t'as de la chance, j'ai fais un truc similaire y'a pas longtemps.
    Perso je suis passé par des regex.

    Cela paraitrait logique que Curl ai une fonction qui permette de faire ça, mais je n'ai aucune idée de si elle existe ^^

    Voici donc ce que je te propose:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_replace("\(href|src)=(['|\"])([^'|\"]*)['|\"]\i", "$1=$2http://urldusite.com$3$2",$text)
    Je l'ai un peut modifier pour ce que tu souhaite faire, normalement ça doit etre bon.
    Voici la logique:

    * Tout ce qui commence par href ou src ($1)
    * Suivis d'un =
    * Suivis soit d'une simple soit d'une double quote($2)
    * Suivis de n'importe quoi qui ne soit pas une quote (le liens) ($3)
    * Suivis soit d'une simple soit d'une double quote

    J'ai pas testé exactement ça, mais ça doit marcher normalement

    Edit:

    Ah ! Et (j'avais pas vu), si tu veux utiliser une fonction php dans le remplacement, il faut que tu précise l'option "e" (eval) en fin de regex, et que tu appelle ton replacement comme une string concaténée, comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    preg_replace("\(href|src)=(['|\"])([^'|\"]*)['|\"]\ie", 
    '"$1=$2".functionphp($truc)."$3$2', $text)
    Par contre, si je dis pas de bêtise, cette option est deprecated, je ne connais pas quelle option/fonction utilisée maintenant (ni ne sais si cela existe d'ailleurs), Mais il y a des risques que celle-ci disparaisse un jour ou l'autre.

    Edit 2:

    Il faudra par contre chercher encore un peut pour ajouter l'interdiction de commencer par "http", je sais plus trop comment faire pour dire "tout ce qui ne commence pas par http:// et qui ne contient ni simple ni double quote"
    (^http[^'|\"]*) à la place de ([^'|\"]*), peut être ?


    a creuser

Discussions similaires

  1. Réponses: 12
    Dernier message: 16/11/2012, 16h42
  2. [PPT-2010] Liens relatifs vers des fichiers aux noms relatifs
    Par minimir dans le forum Powerpoint
    Réponses: 0
    Dernier message: 06/09/2012, 16h53
  3. lien relatif et lien absolu
    Par vorace dans le forum Langage
    Réponses: 3
    Dernier message: 19/04/2011, 16h41
  4. [XHTML] Pb avec lien relatif et lien absolu
    Par trotters213 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 13/09/2006, 13h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo