|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre habitué
![]() Étudiant Inscription : janvier 2006 Messages : 501 ![]() |
Bonjour,
J'aimerais faire un ptit bout de code qui permettrait de trouver tous les liens dans une page et de les ouvrir dans une nouvelle fenêtre a chaque fois... Est-ce possible ? Pouvez-vous m'aider ? Par ou dois-je commencer svp ? Merci ++ |
|
|
00
|
|
|
#2 |
|
Membre éprouvé
![]() Inscription : décembre 2005 Messages : 385 ![]() |
Salut,
A mon avis, tu devrais commencer par les etapes suivantes : - prendre le contenu de la page (le code HTML donc) soit avec fsockopen soit avec CURL - tu recherches les liens avec des expressions régulières - tu affiches les pages.. |
|
|
00
|
|
|
#3 |
|
Membre habitué
![]() Étudiant Inscription : janvier 2006 Messages : 501 ![]() |
Ok mais en fait c'est surtout pour les expressions régulieres que ca se complique, ca devient plus délicat, parce que j'aimerais ouvrir tous les liens, même si c'est du type http://www.url.com/page.php?go=111&p=5555
Enfin vraiment toutes les urls quoi et non ceux du type www.domaine.com Et après je pense le deuxieme probleme, c'est pour le fait d'ouvrir chaque lien dans une nouvelle page, je me demande meme si c'est possible avec php ? Ne faut-il pas passer par du javascript ? MErci ++ |
|
|
00
|
|
|
#4 |
|
Membre habitué
![]() Étudiant Inscription : janvier 2006 Messages : 501 ![]() |
Re, c'est encore moi, voila j'ai du trouvé du javascript pour ouvir une fenetre a chaque fois grave a un for en php mais maintenant il me faut une expression réguliere pour récuperer dans une chaine de caractere $texte toutes les urls présentes...
Merci ++ |
|
|
00
|
|
|
#5 | ||||
|
Invité de passage
![]() |
va voir cette page http://lyhana8.free.fr/index.php?include=source.php&wsc=source.php
c'est une page a moi qui me permet d'afficher les sources de mes script et remplaçant les nom de fichier .php, .js ou . htm par un lien pointant vers eux. Pour ca j'utilise des expression regulieres: Code :
$h_str = eregi_replace("(['\" =])(([a-zA-Z0-9_-]+)\.(php|css|js|htm))([\?'\" ])", "\\1<a href='index.php?include=source.php&wsc=\\2' >\\2</a>\\5", highlight_file($p_file, TRUE)); Code :
(['\" =])(([a-zA-Z0-9_-]+)\.(php|css|js|htm))([\?'\" ]) Code :
\\1<a href='index.php?include=source.php&wsc=\\2' >\\2</a>\\5 bon vite fais: les \\numero correspondante aux different block de parenthese (le numero indique la parenthese ouvrante du bloc). par exemple ici \\1 sera remplacer par l'un des caracteres suivants : (celui qu'elle aura trouver, ya un espace !). toi en gros il faut que tu recherche les truc genre Donc j'espere que tu es pas trop bordelique niveau guillemets espace ou autre dans tes balises sinon ca va etre un peu plus galere. Pour ta chaine regexp va voir ca http://fr.wikipedia.org/wiki/Expression_r%C3%A9guli%C3%A8re (si t'y connais rien en regexp ca pourra t'aider un peu). Je peu te proposer ca: Code :
(href=")(([a-zA-Z0-9_-]+)\.(php|htm))(\?[a-zA-Z0-9_-&=]*)(\") Code :
Ce qui devrai donc donner: Code :
bonne chance |
||||
|
|
00
|
|
|
#6 |
|
Membre émérite
![]() ![]() Inscription : novembre 2004 Messages : 735 ![]() |
très bon post avec de très bonne explications, par contre essaie de travailler avec les expressions régulières perl qui sont plus performante
preg_replace() Pierre |
|
|
00
|
|
|
#7 |
|
Membre habitué
![]() Étudiant Inscription : janvier 2006 Messages : 501 ![]() |
Par exemple, j'ai ceci, j'ai un texte dans la variable $texte : $texte="Slt, ca va, une adresse http://www.domaine.com et puis ca aussi http://www.domaine.com/page.php?aaa=eee&bbbb=ffff et voila, aller encore une http://www.aaaa.com/index.php !" Et j'aimerais au final, pouvoir affiché les adresses comme ca par ex : http://www.domaine.com http://www.domaine.com/page.php?aaa=eee&bbbb=ffff http://www.aaaa.com/index.php Merci ++[/quote] |
|
|
00
|
|
|
#8 | ||
|
Membre éclairé
![]() Inscription : janvier 2004 Messages : 424 ![]() |
moi j'utilise cette petite fonction qui a l'air de bien marcher.. mais je ne suis pas un grand pro des expressions regulieres.. donc sans garantie ..
Code :
|
||
|
|
00
|
|
|
#9 |
|
Membre habitué
![]() Étudiant Inscription : janvier 2006 Messages : 501 ![]() |
oki tu pourrais donner un exemple entier, concret zevince stp... pour voir comment l'utiliser...
Merci ++ |
|
|
00
|
|
|
#10 | ||
|
Invité de passage
![]() |
Je peux te propose ca:
$js = preg_match_all("(http://)(([a-zA-Z0-9_-]+)([\/]+)\.(php[\?]?))([a-zA-Z0-9_-&=]*)", "\\2\\5'", $texte); mais je ne garantie pas la validiter de la regexp regarde les exemple de cette fonction : http://fr3.php.net/manual/fr/function.preg-match.php il ya un exemple Lire un nom de domaine dans une URL, qui je pense contient la regexp que tu cherches, a savoir: Apres a toi de bidouiller pour faire exactement ce que tu cherches. Ici les url ayant des parametre seraient recuperer sans les parametres, regarde les liens sur l'article de wikipedia un des sites explique assez bien. Code :
|
||
|
|
00
|
|
|
#11 | ||
|
Membre habitué
![]() Étudiant Inscription : janvier 2006 Messages : 501 ![]() |
Bonjour,
Voila, j'ai essayé en mettant que le début commence par href=' et la fin par ' mais ca ne marche pas, quelqu'un pourrait me dire pourquoi svp ? Merci ++ Code :
|
||
|
|
00
|
|
|
#12 |
|
Membre émérite
![]() |
Ton texte est-il en html ou c'est un texte basique? Si html, zevince t'a donné la réponse car en fait il ne suffit que de récupérer l'adresse comprise dans le href de la balise <a>.
__________________
Chaque problème a une solution, mais il est plus facile de répondre si le problème est correctement renseignés |
|
|
00
|
|
|
#13 |
|
Expert Confirmé
![]() ![]() Urbaniste Inscription : juillet 2004 Messages : 1 423 ![]() |
moi je ferais ça côté client
j'ouvre la page html en php et j'y colle au passage un js qui fait la chose pour cela js te donne getElementsByTagName qui te retourne un table de XMLNodes pour chaque noeud de la table tu récupère son attribut hef s'il existe tu y ajoute un attribut target c'est extrêment simple tu peux aussi faire ça côté php avec le DOM si tu est sur que html de la page est conforme. A+JYT |
|
|
00
|
|
|
#14 | ||
|
Membre habitué
![]() Étudiant Inscription : janvier 2006 Messages : 501 ![]() |
Slt
En fait c'est du texte basique, par exemple, voici ce que j'ai essayé, ca marche toujours pas : Code :
|
||
|
|
00
|
|
|
#15 | ||
|
Membre émérite
![]() |
Normal car sa renvoie un tableau, pour l'afficher:
Code :
__________________
Chaque problème a une solution, mais il est plus facile de répondre si le problème est correctement renseignés |
||
|
|
00
|
|
|
#16 |
|
Membre habitué
![]() Étudiant Inscription : janvier 2006 Messages : 501 ![]() |
oki merci
Merci ++ |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com