Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/07/2011, 14h56   #1
Candidat au titre de Membre du Club
 
Homme
Étudiant
Inscription : juillet 2011
Messages : 31
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juillet 2011
Messages : 31
Points : 11
Points : 11
Par défaut Découper une phrase

Bonjour,

Je cherche à découpé du code html que j'ai extrait depuis une page pour ne garder que les liens mais vu que ce qu'il y a avant et après les liens est variable je ne sais pas trop comment faire.

j'ai essyé avec plusieurs fonctions (str_replace, preg_replace, preg_match,...) mais je n'ai pas réussis à conserver uniquement l'adresse :/

Un exemple ne fera pas de mal.

je récupére ça :

<p>blablabla</p><a href='http://chemin/document.pdf'> document.pdf </a><p>blobloblo</p>

J'ai utilisé certaines fonctions citées plus haut pour supprimer les balises et j'obtiens ça :

blablabla http://chemin/document.pdf document.pdf blobloblo

Et en fait je voudrais pour mettre des conditions du genre tout ce qui est avant "http" et après ".pdf" je supprime pour ne garder que l'adresse propre du document.

Merci d'avance pour votre aide.
hidewak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2011, 15h03   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 456
Points : 8 456
pour parser du HTML c'est DOMDocument, y'a plein de sujets sur le forum
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 19/07/2011, 15h09   #3
Nouveau Membre du Club
 
Avatar de Thibault92
 
Homme Thibault
Étudiant
Inscription : juin 2011
Messages : 43
Détails du profil
Informations personnelles :
Nom : Homme Thibault
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2011
Messages : 43
Points : 33
Points : 33
Essaye en faisant un explode() et tu ne récupère que la ligne du tableau qui t’intéresse .

http://php.net/manual/fr/function.explode.php
Thibault92 est déconnecté   Envoyer un message privé Réponse avec citation 11
Vieux 19/07/2011, 15h34   #4
Candidat au titre de Membre du Club
 
Inscription : décembre 2010
Messages : 45
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 45
Points : 10
Points : 10
Essai toujours de faire une fonction perso si tu veux t'amuser.
Idée:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
function addlink($chaine)
// Retourne le lien compris dans $chaine
{
$i=0;
$ret =""; // sera la chaine de retour
 
while( isset($chaine[$i]) )
{
	if( ($chaine[$i] =='h')
		&&( isset($chaine[$i+1]) )&& ($chaine[$i+1] =='t')
		&&( isset($chaine[$i+2]) )&& ($chaine[$i+2] =='t')
		&&( isset($chaine[$i+3]) )&& ($chaine[$i+3] =='p')
		&&( isset($chaine[$i+4]) )&& ($chaine[$i+4] ==':') )
	{
              while (...) // Tant que je ne rencontre pas .pdf
              {
              $ret. = $chaine[$i];
              // Si je rencontre .pdf" alors break; (après pdf)
              $i++;
              }
         }
}
if($ret != "") return $ret;
return //ce que tu veux pour dire qu'il n'y avait pas de lien dans la chaine
}
Il faudra aussi penser au fait qu'il y ait 2 liens dans la chaine par exemple... enfin à voir selon utilisation

Enfin je l'ai ecris vite fait, mais voilà le principe
oni13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2011, 16h09   #5
Candidat au titre de Membre du Club
 
Inscription : décembre 2010
Messages : 45
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 45
Points : 10
Points : 10
Fonction qui marche: (mais ca reste du Mac Gyver )

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
function addlink($chaine)
// Retourne le lien compris dans $chaine
{
$i=0;
$ret =""; // sera la chaine de retour
$pdf = 0;
while( isset($chaine[$i]) )
{
	if( ($chaine[$i] =='h')
		&&( isset($chaine[$i+1]) )&& ($chaine[$i+1] =='t')
		&&( isset($chaine[$i+2]) )&& ($chaine[$i+2] =='t')
		&&( isset($chaine[$i+3]) )&& ($chaine[$i+3] =='p')
		&&( isset($chaine[$i+4]) )&& ($chaine[$i+4] ==':') )
	{
              while ($pdf == 0) // Tant que je ne rencontre pas .pdf
              {
              if($chaine[$i] == '.' && $chaine[$i+1] == 'p' && $chaine[$i+2] == 'd' && $chaine[$i+3] == 'f'){ $pdf = 1; $ret.=".pdf"; break;}
	      $ret.= $chaine[$i];
              $i++;
              }
         }
$i++;
}
if($ret != "") return $ret;
return 'perdu';
}
A rajouter des sécurités, comme des isset($chaine[$i]) etc..
oni13 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 19/07/2011, 16h31   #6
Candidat au titre de Membre du Club
 
Homme
Étudiant
Inscription : juillet 2011
Messages : 31
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juillet 2011
Messages : 31
Points : 11
Points : 11
Citation:
Envoyé par stealth35 Voir le message
pour parser du HTML c'est DOMDocument, y'a plein de sujets sur le forum
J'ai déja réussis à récupérer le code Html mais je voulais isoler uniquement les liens et j'ai réussi à isoler le lien grâce à la fonction explode(), merci Thibault92.

Merci pour ta fonction oni13, elle a l'air de ressembler à la mienne donc je pense qu'elle doit marcher aussi.
hidewak est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h25.


 
 
 
 
Partenaires

Hébergement Web