Pb avec une exp reg
Résolu
maure
-
sebsauvage Messages postés 32893 Date d'inscription Statut Modérateur Dernière intervention -
sebsauvage Messages postés 32893 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
j'au un petit probleme avec cette expression reguliere que j'ai triuvé sur le net: est ce que vous pouvez me dire ce qu'elle fait
$title = preg_replace("/&#([0-9]+);/", "\${1};", $title);
puis aussi j'aimerais savoir pourquoi on termine les expression regulieres par le carectere i comme dans l'exemple suivant :
preg_match("/(http:\/\/([^\/]*))/i", $url, $matches);
merci;
j'au un petit probleme avec cette expression reguliere que j'ai triuvé sur le net: est ce que vous pouvez me dire ce qu'elle fait
$title = preg_replace("/&#([0-9]+);/", "\${1};", $title);
puis aussi j'aimerais savoir pourquoi on termine les expression regulieres par le carectere i comme dans l'exemple suivant :
preg_match("/(http:\/\/([^\/]*))/i", $url, $matches);
merci;
A voir également:
- Pb avec une exp reg
- Reg cleaner - Télécharger - Nettoyage
- Exp. sim canon ✓ - Forum Canon
- Multi exp pokemon heartgold - Forum Pokémon
- Multi exp pokemon diamant - Forum Jeux vidéo
- Exp sim canon - Forum Canon
10 réponses
RTFM ?
Ce sont des expressions régulière de type perl.
/chaîne à chercher/options
Le 'i' signifie qu'il ne faut pas tenir compte de la casse (minuscules/majuscules).
Ta première expression régulière détecter les entités HTML tel que & #163;
Mais elle ne fait aucun remplacement.
Autrement dit tu pourrais mettre cette ligne en commentaire: elle ne sert à rien.
Quand à la seconde, a vue de nez, elle extrait le nom de machine(+domaine) d'une URL.
Exemple:
http://www.commentcamarche.net/forum/index.php3?cat=0
--> http://www.commentcamarche.net
Ce sont des expressions régulière de type perl.
/chaîne à chercher/options
Le 'i' signifie qu'il ne faut pas tenir compte de la casse (minuscules/majuscules).
Ta première expression régulière détecter les entités HTML tel que & #163;
Mais elle ne fait aucun remplacement.
Autrement dit tu pourrais mettre cette ligne en commentaire: elle ne sert à rien.
Quand à la seconde, a vue de nez, elle extrait le nom de machine(+domaine) d'une URL.
Exemple:
http://www.commentcamarche.net/forum/index.php3?cat=0
--> http://www.commentcamarche.net
Merci beaucoup pour ta réponse,
j'ai encore une autre petite question,
ça sert à quoi aussi le caractére % qu'on met au debut et à la fin d'une expression reguliere exempl :
%<a href=\"(.+?)\"[^>]*>(.+?)</a>([^<]*)%i"
PS: je developpe en PHP et pas en perl
merci encore
j'ai encore une autre petite question,
ça sert à quoi aussi le caractére % qu'on met au debut et à la fin d'une expression reguliere exempl :
%<a href=\"(.+?)\"[^>]*>(.+?)</a>([^<]*)%i"
PS: je developpe en PHP et pas en perl
merci encore
je developpe en PHP et pas en perl
oui oui, j'avais compris.
Mais les procédures preg_* de php utilisent le moteur d'expression régulières de perl (pcre).
Le caractère % pourrait aussi bien être & @ ou °
En fait, c'est un séparateur.
Avec le moteur pcre, il faut utiliser le même caractères pour spécifier début et fin d'expression régulière.
On utilise généralement /, mais parfois on prend un autre caractère quand on veut utiliser / à l'intérieur de l'expression régulière.
Exemple:
"%<a href=\"(.+?)\"[^>]*>(.+?)</a>([^<]*)%i"
"&<a href=\"(.+?)\"[^>]*>(.+?)</a>([^<]*)&i"
"²<a href=\"(.+?)\"[^>]*>(.+?)</a>([^<]*)²i"
et
"§<a href=\"(.+?)\"[^>]*>(.+?)</a>([^<]*)§i"
sont strictement équivalentes.
oui oui, j'avais compris.
Mais les procédures preg_* de php utilisent le moteur d'expression régulières de perl (pcre).
Le caractère % pourrait aussi bien être & @ ou °
En fait, c'est un séparateur.
Avec le moteur pcre, il faut utiliser le même caractères pour spécifier début et fin d'expression régulière.
On utilise généralement /, mais parfois on prend un autre caractère quand on veut utiliser / à l'intérieur de l'expression régulière.
Exemple:
"%<a href=\"(.+?)\"[^>]*>(.+?)</a>([^<]*)%i"
"&<a href=\"(.+?)\"[^>]*>(.+?)</a>([^<]*)&i"
"²<a href=\"(.+?)\"[^>]*>(.+?)</a>([^<]*)²i"
et
"§<a href=\"(.+?)\"[^>]*>(.+?)</a>([^<]*)§i"
sont strictement équivalentes.
Bonjour,
je me suis permu de remonter ce poste, car j'ai eu un autre pb du meme genre.
voila mon pb, j'aimerai recuperer le titre d'une page web à partir du sources html, j'ai trouvé cette exp reg
eregi("<title>(.*)</title>", $data, $title);
sur le net elle marche bien mais quand un site contient plusieurs balises <title> cette expression ne marche plus, car elle prends tous ce qui est entre le 1er balise <title> et le derier balise </title>.
avez vous une solution pour cette exp reg?
j'aimerais aussi comprendre pourquoie elle fait ça?
merci
je me suis permu de remonter ce poste, car j'ai eu un autre pb du meme genre.
voila mon pb, j'aimerai recuperer le titre d'une page web à partir du sources html, j'ai trouvé cette exp reg
eregi("<title>(.*)</title>", $data, $title);
sur le net elle marche bien mais quand un site contient plusieurs balises <title> cette expression ne marche plus, car elle prends tous ce qui est entre le 1er balise <title> et le derier balise </title>.
avez vous une solution pour cette exp reg?
j'aimerais aussi comprendre pourquoie elle fait ça?
merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
arf... dans ce cas abandonne eregi et utilise le module pcre de php.
eregi est trop limité.
eregi est trop limité.
Bonjoue sebsauvage et merci pour tes réponses
une fois de plus j'ai une question sur les exps regs
tu paurrais me dire pkoi cette exp ne prends pas en compte le text suivant:
voici l'exp :
/valign="top"><b>([^<]*)<\/b><\/td>.*?<a href="([^"]*)" class="filenews" target="_top">(.*?)<\/a>/mi
voici le text:
<TR valign="middle">
<TD width="1%" NOWRAP VALIGN="TOP"><B>12:33</B></TD>
<TD></TD>
<TD align="left" width="95%"><A HREF="..." class="fileNews" TARGET="_top">...</A></TD>
<TD width="1%" NOWRAP VALIGN="TOP">19/05/2005</TD>
<TD valign="top"><I>(CF)</I></TD>
</TR>
alors que ca devait afficher la date le lien et le titre ....
une fois de plus j'ai une question sur les exps regs
tu paurrais me dire pkoi cette exp ne prends pas en compte le text suivant:
voici l'exp :
/valign="top"><b>([^<]*)<\/b><\/td>.*?<a href="([^"]*)" class="filenews" target="_top">(.*?)<\/a>/mi
voici le text:
<TR valign="middle">
<TD width="1%" NOWRAP VALIGN="TOP"><B>12:33</B></TD>
<TD></TD>
<TD align="left" width="95%"><A HREF="..." class="fileNews" TARGET="_top">...</A></TD>
<TD width="1%" NOWRAP VALIGN="TOP">19/05/2005</TD>
<TD valign="top"><I>(CF)</I></TD>
</TR>
alors que ca devait afficher la date le lien et le titre ....
merciiiiiiiiiiiiiiiiiiiiiiiiiiii,
ca marche
est ce que tu peut medire la signification des option e, s, i
merci encore
ca marche
est ce que tu peut medire la signification des option e, s, i
merci encore
Au temps pour moi: le 'e' n'est pas nécessaire
(il n'est utile que pour les remplacements).
En revanche le 's' est utile:
Habituellement le point (.) signifie "n'importe quel caractère" (sous-entendu: sauf retour à la ligne, tabulation, etc.)
Donc comme ce que tu recherche était sur plusieurs lignes, il ne le trouvait pas.
Avec 's', le point signifie "absolument n'importe quel caractère", ce qui permet de tout récupérer, y compris les retours à la ligne.
(il n'est utile que pour les remplacements).
En revanche le 's' est utile:
Habituellement le point (.) signifie "n'importe quel caractère" (sous-entendu: sauf retour à la ligne, tabulation, etc.)
Donc comme ce que tu recherche était sur plusieurs lignes, il ne le trouvait pas.
Avec 's', le point signifie "absolument n'importe quel caractère", ce qui permet de tout récupérer, y compris les retours à la ligne.
Bonjour sebsauvage et merci pour toutes tes réponses,
tu ne connais pas une option qui permet de demander à une exp reg de commencer le traitement du bas vers le haut?
tu ne connais pas une option qui permet de demander à une exp reg de commencer le traitement du bas vers le haut?
tu ne connais pas une option qui permet de demander à une exp reg de commencer le traitement du bas vers le haut?
Pas à ma connaissance.
La solution pourrait être d'utiliser l'expression régulière pour établir une liste des emplacement des blocs de texte intéressants, puis de parcourir cette liste du bas vers le haut.
Pas à ma connaissance.
La solution pourrait être d'utiliser l'expression régulière pour établir une liste des emplacement des blocs de texte intéressants, puis de parcourir cette liste du bas vers le haut.