Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
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 20/08/2006, 13h59   #1
Invité régulier
 
Homme Alexandre
Développeur informatique
Inscription : août 2006
Messages : 61
Détails du profil
Informations personnelles :
Nom : Homme Alexandre
Âge : 21
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Tourisme - Loisirs

Informations forums :
Inscription : août 2006
Messages : 61
Points : 9
Points : 9
Par défaut [Problème] Limiter une chaine

Bonjour,

Voila je cherche à exporter d'un code html seulement l'adresse URL et L'url de l'image qui sera presente dans ce code.

j'ai donc fait ce code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
<?
$string = '<a href="http://www.softdomaine.fr"><img src="image.jpg" /></a>';
 
$debut_a = strpos('href="', $string);
$fin_a = strpos('">', $string);
 
$debut_i = strpos('src="', $string);
$fin_i = strpos('" />', $string);
 
$url = substr($string,$debut_a,$fin_a);
$img = substr($string,$debut_i,$fin_i);
 
echo 'L\'url est : '.$url.' <br /><br />';
echo 'l\'image est : '.$img.'';
 
echo '<br /><br />La position de debut de l\'url est : '.$debut_a.'';
echo '<br />La position de fin de l\'url est : '.$fin_a.'';
 
echo '<br /><br />La position de debut de l\'image est :'.$debut_i.'';
echo '<br />La position de fin de l\'image est : '.$fin_i.'';
 
?>
J'ai regardé la FAQ PHP bien sur pour voir ce qu'il en disait cependant sa ne m'aide pas énormément, le resultat de ce script donne :

Citation:
L'url est :

l'image est :

La position de debut de l'url est :
La position de fin de l'url est :

La position de debut de l'image est :
La position de fin de l'image est :
et je vois vraiment pas pourquoi ...

Merci de m'aider.
Au revoir
AnGe7s est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2006, 15h46   #2
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Pour ne pas tout faire pas RegEx ?
Voici de quoi t'inspirer : Initiation aux expressions régulières en PHP

Ca pourrait peut etre te faire changer de méthode
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2006, 16h58   #3
Invité régulier
 
Homme Alexandre
Développeur informatique
Inscription : août 2006
Messages : 61
Détails du profil
Informations personnelles :
Nom : Homme Alexandre
Âge : 21
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Tourisme - Loisirs

Informations forums :
Inscription : août 2006
Messages : 61
Points : 9
Points : 9
Ok, je regarde, je te remercie, cependant je ne me rappelle pas pouvoir faire ceci avec les expressions régulières, enfin je vais encore regarder et je tiens au courant.
AnGe7s est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2006, 17h29   #4
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Ben si tu fais avec un masque de ce style ca pourrait fonctionner parfaitement :
Code :
'#<a href="([^\]]*)"><img src="([^\]]*)" \/><\/a>#Usi';
hum : pas testé
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2006, 18h46   #5
Membre éprouvé
 
Avatar de GregPeck
 
Inscription : novembre 2005
Messages : 530
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 530
Points : 464
Points : 464
Sinon c'est possible et très puissant en utilisant le dom, notamment cette fonction:

http://fr.php.net/manual/fr/function...sbytagname.php
GregPeck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2006, 19h05   #6
Invité régulier
 
Homme Alexandre
Développeur informatique
Inscription : août 2006
Messages : 61
Détails du profil
Informations personnelles :
Nom : Homme Alexandre
Âge : 21
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Tourisme - Loisirs

Informations forums :
Inscription : août 2006
Messages : 61
Points : 9
Points : 9
Merci pour vos réponses !

Mais je suis pas a big boss en php je connais un tout petit peux les class, et vraiment un tout petit peux les regex alors bon ^^

je m'en vois un peu ^^
AnGe7s est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2006, 19h19   #7
Invité régulier
 
Homme Alexandre
Développeur informatique
Inscription : août 2006
Messages : 61
Détails du profil
Informations personnelles :
Nom : Homme Alexandre
Âge : 21
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Tourisme - Loisirs

Informations forums :
Inscription : août 2006
Messages : 61
Points : 9
Points : 9
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
 
$url  = '#<a href="([^"]+)">(.*)</a>#Usi';
$img = '#<img src="([^"]+)">#Usi';
 
$lien = array();
$lien[] = '<a id="Lien11" href="http://www.wipub.com/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" target="_blank">
<img border=0 src="http://www.wipub.com/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"></a>';
 
 
foreach($lien as $subject){
    $matches = array();
    if( (preg_match_all($url, $subject, $matches, PREG_SET_ORDER))&&(preg_match_all($img, $subject, $matches, PREG_SET_ORDER)) )
	{
     /*
	 Insertion
	 Dans la
	 Base de
	 Données
	 */
    }
    else
	{
        echo "Le code de l'annonceur est incorrecte";
    }
 
}
Donc voila ce que j'ai fais, cependant cela m'affiche :

Citation:
Le code de l'annonceur est incorrecte
Merci de votre aide.

PS: Enfete pour ceux qui aurait pas compris, je cherche à ajouter des bannières d'annonceurs dans une base de donnée mais en séparant de l'url de l'image, donc je souhaiterais mettre le code tel quelle dans un champs texte, que sa me récupère l'url et l'image et j'insere les deux dans la BD
AnGe7s est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2006, 19h59   #8
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Je sais pas si tu as remarqué mais c'est normal que tu trouves pas la chaine recherchée tu lui donnes un masque et ce masque ne correspond pas à ce que tu lui donnes comme lui.
voici ton masque
Code :
1
2
$url  = '#<a href="([^"]+)">(.*)</a>#Usi';
$img = '#<img src="([^"]+)">#Usi';
ps : ton masque dois échapper les caractères utilisés à la base par les RegEx. Donc ce masque serait plus approprié :
Code :
1
2
$url  = '#<a href="([^"]+)">(.*)<\/a>#Usi';
 $img = '#<img src="([^"]+)">#Usi';
et voilà comment ton lien est fait :
Code :
1
2
$lien[] = '<a id="Lien11" href="http://www.wipub.com/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" target="_blank">
<img border=0 src="http://www.wipub.com/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"></a>';
Il y a une grosse différence, notamment du coté du border qui apparait dans img avant le src de meme pour le <a>.Pour que ce soit accepté il faut rajouté ces éléments dans ton masque.
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2006, 20h51   #9
Invité régulier
 
Homme Alexandre
Développeur informatique
Inscription : août 2006
Messages : 61
Détails du profil
Informations personnelles :
Nom : Homme Alexandre
Âge : 21
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Tourisme - Loisirs

Informations forums :
Inscription : août 2006
Messages : 61
Points : 9
Points : 9
Oui cependant chaque régie ne fait pas leur code ainsi ...

j'ai modifier avec ton code, j'ai enlever le border=0 et j'ai toujour la même erreur
AnGe7s est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2006, 21h45   #10
Membre éprouvé
 
Avatar de GregPeck
 
Inscription : novembre 2005
Messages : 530
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 530
Points : 464
Points : 464
Avec le dom, s'il est activé sur ton serveur, voici un exemple de code pour exporter tous les src des images. Facile ensuite d'afficher également les HREF des balises A.

Code :
1
2
3
4
5
6
7
8
$doc = @DOMDocument::loadHTML($html);
 
$tags = $doc->getElementsByTagName("img"));
if ($tags->length) {
	foreach ($tags as $tag) {
		echo "<br/>Image détectée. URL=".utf8_decode($tag->getAttribute('src'));
	}
}
GregPeck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/08/2006, 01h09   #11
Invité régulier
 
Homme Alexandre
Développeur informatique
Inscription : août 2006
Messages : 61
Détails du profil
Informations personnelles :
Nom : Homme Alexandre
Âge : 21
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Tourisme - Loisirs

Informations forums :
Inscription : août 2006
Messages : 61
Points : 9
Points : 9
Merci pour toutes vos réponses et voici ce que j'ai fais :

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
27
28
29
30
31
32
33
34
35
36
 
<?
 
 
 function Str_entre($strsource,$strleft,$strright)
{
 
if ($strleft <> "") 
    {
   $intstart = strpos($strsource,$strleft)+strlen($strleft); 
      if (strpos($strsource,$strleft) === FALSE) return ""; 
       }
  else
         $intstart = 0; 
 
       if ($strright <> "") 
                {
                $intlen = strpos(substr($strsource,$intstart,strlen($strsource)),$strright); 
         if (strpos(substr($strsource,$intstart,strlen($strsource)),$strright) === FALSE) return ""; 
         }
   else
        $intlen = (strlen($strsource) - $intstart);
 
    return substr($strsource,$intstart,$intlen);    
 }
 
 
$string = '<a id="Lien11" href="http://www.wipub.com/XXXXXXXXXXXXXXXXXXXXXXXXXXXXX" target="_blank">
<img border=0 src="http://www.wipub.com/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXx"></a>';
 
$url = Str_entre($string,'href="','"');
$img = Str_entre($string,'src="','">');
 
echo "$url <br /><br /> $img";
 
?>
Et devinez quoi ? Sa fonctionne parfaitement bien

Je vous remercie
Au revoir
AnGe7s est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h37.


 
 
 
 
Partenaires

Hébergement Web