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:
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:
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
Partager