je souhaite r=E9cup=E9rer le contenu textuel d'un site web en vue de le
passer vers une base Mysql. Je souhaite donc faire un script qui me
g=E9n=E9rera des requetes sql.
Seulement, je ne comprends vraiment pas pourquoi cela ne fonctionne
pas...
j'ai fais ces quelques lignes : (j'ai pas mis tous le code perl, je n'ai
mis que l'essentiel)
$content =3D "<p align=3D"left"><font face=3D"Arial Narrow"><br>
c'est une Soci=E9t=E9 d'Ing=E9nierie
sp=E9cialis=E9e dans la r=E9alisation ... Pour
plus d'informations :<br></font></p>";
# il y =E0 un saut de ligne apr=E8s le "<br>", un autre apr=E8s le
# "Ing=E9nierie", et un autre apr=E8s le "Pour"
if ($content =3D~ /<p align=3D"left"><font face=3D"Arial Narrow"><br>(.*?)P=
our
\nplus d'informations :<br>/gi) {
my ($texte) =3D $1;
print "\ttexte=3D".$texte."\n";
}
=E0 l'ex=E9cution, il ne m'affiche rien ($texte est vide)
O=F9 est ce que j'ai fais une erreur ? dans l'expression r=E9guli=E8re ?
J'ai essay=E9 pas mal de possibilit=E9s avec les sauts de lignes etc, etc..
mais je n'y arrive pas.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
alian
$content = "<p align="left"><font face="Arial Narrow"><br> c'est une Société d'Ingénierie spécialisée dans la réalisation ... Pour plus d'informations :<br></font></p>"; ...
à l'exécution, il ne m'affiche rien ($texte est vide)
Ca s'execute ca ?? Soit tu remplaces tes " par ", ou tu fais:
$content = <<EOF <p align="left"><font face="Arial Narrow"><br> c'est une Société d'Ingénierie spécialisée dans la réalisation ... Pour plus d'informations :<br></font></p> EOF
$content = "<p align="left"><font face="Arial Narrow"><br>
c'est une Société d'Ingénierie
spécialisée dans la réalisation ... Pour
plus d'informations :<br></font></p>";
...
à l'exécution, il ne m'affiche rien ($texte est vide)
Ca s'execute ca ??
Soit tu remplaces tes " par ", ou tu fais:
$content = <<EOF
<p align="left"><font face="Arial Narrow"><br>
c'est une Société d'Ingénierie
spécialisée dans la réalisation ... Pour
plus d'informations :<br></font></p>
EOF
$content = "<p align="left"><font face="Arial Narrow"><br> c'est une Société d'Ingénierie spécialisée dans la réalisation ... Pour plus d'informations :<br></font></p>"; ...
à l'exécution, il ne m'affiche rien ($texte est vide)
Ca s'execute ca ?? Soit tu remplaces tes " par ", ou tu fais:
$content = <<EOF <p align="left"><font face="Arial Narrow"><br> c'est une Société d'Ingénierie spécialisée dans la réalisation ... Pour plus d'informations :<br></font></p> EOF
Klaus
Newsgroups wrote:
Bonjour,
je souhaite récupérer le contenu textuel d'un site web en vue de le passer vers une base Mysql. Je souhaite donc faire un script qui me générera des requetes sql.
Seulement, je ne comprends vraiment pas pourquoi cela ne fonctionne pas...
j'ai fais ces quelques lignes : (j'ai pas mis tous le code perl, je n'ai mis que l'essentiel)
$content = "<p align="left"><font face="Arial Narrow"><br> c'est une Société d'Ingénierie spécialisée dans la réalisation ... Pour plus d'informations :<br></font></p>";
# il y à un saut de ligne après le "<br>", un autre après le # "Ingénierie", et un autre après le "Pour"
if ($content =~ /<p align="left"><font face="Arial Narrow"><br>(.*? )Pour nplus d'informations :<br>/gi) { my ($texte) = $1; print "ttexte=".$texte."n"; }
à l'exécution, il ne m'affiche rien ($texte est vide)
Où est ce que j'ai fais une erreur ? dans l'expression régulière ? J'ai essayé pas mal de possibilités avec les sauts de lignes etc, etc .. mais je n'y arrive pas.
Le problème est que la construction (.*?) dans la regex ne reconnaît pas les "n", pour que les "n" sont reconnus, il faut rajouter l'option "s" à la fin du regex derrière le "/gi":
.... <br>/gis ....
voir aussi http://perl.enstimac.fr/DocFr/perlre.html ++++++++++++++++++++++++++++++++++++++++++ ++ [option] s - Permet de traiter une chaîne comme une seule ++ ligne. Le caractère "." reconnaît alors n'importe quel caractère, ++ même une fin de ligne qui normalement n'est pas reconnue. ++++++++++++++++++++++++++++++++++++++++++
Newsgroups wrote:
Bonjour,
je souhaite récupérer le contenu textuel d'un site web en vue de le
passer vers une base Mysql. Je souhaite donc faire un script qui me
générera des requetes sql.
Seulement, je ne comprends vraiment pas pourquoi cela ne fonctionne
pas...
j'ai fais ces quelques lignes : (j'ai pas mis tous le code perl, je n'ai
mis que l'essentiel)
$content = "<p align="left"><font face="Arial Narrow"><br>
c'est une Société d'Ingénierie
spécialisée dans la réalisation ... Pour
plus d'informations :<br></font></p>";
# il y à un saut de ligne après le "<br>", un autre après le
# "Ingénierie", et un autre après le "Pour"
if ($content =~ /<p align="left"><font face="Arial Narrow"><br>(.*? )Pour
nplus d'informations :<br>/gi) {
my ($texte) = $1;
print "ttexte=".$texte."n";
}
à l'exécution, il ne m'affiche rien ($texte est vide)
Où est ce que j'ai fais une erreur ? dans l'expression régulière ?
J'ai essayé pas mal de possibilités avec les sauts de lignes etc, etc ..
mais je n'y arrive pas.
Le problème est que la construction (.*?) dans la regex ne reconnaît
pas les "n", pour que les "n" sont reconnus, il faut rajouter
l'option "s" à la fin du regex derrière le "/gi":
.... <br>/gis ....
voir aussi http://perl.enstimac.fr/DocFr/perlre.html
++++++++++++++++++++++++++++++++++++++++++
++ [option] s - Permet de traiter une chaîne comme une seule
++ ligne. Le caractère "." reconnaît alors n'importe quel caractère,
++ même une fin de ligne qui normalement n'est pas reconnue.
++++++++++++++++++++++++++++++++++++++++++
je souhaite récupérer le contenu textuel d'un site web en vue de le passer vers une base Mysql. Je souhaite donc faire un script qui me générera des requetes sql.
Seulement, je ne comprends vraiment pas pourquoi cela ne fonctionne pas...
j'ai fais ces quelques lignes : (j'ai pas mis tous le code perl, je n'ai mis que l'essentiel)
$content = "<p align="left"><font face="Arial Narrow"><br> c'est une Société d'Ingénierie spécialisée dans la réalisation ... Pour plus d'informations :<br></font></p>";
# il y à un saut de ligne après le "<br>", un autre après le # "Ingénierie", et un autre après le "Pour"
if ($content =~ /<p align="left"><font face="Arial Narrow"><br>(.*? )Pour nplus d'informations :<br>/gi) { my ($texte) = $1; print "ttexte=".$texte."n"; }
à l'exécution, il ne m'affiche rien ($texte est vide)
Où est ce que j'ai fais une erreur ? dans l'expression régulière ? J'ai essayé pas mal de possibilités avec les sauts de lignes etc, etc .. mais je n'y arrive pas.
Le problème est que la construction (.*?) dans la regex ne reconnaît pas les "n", pour que les "n" sont reconnus, il faut rajouter l'option "s" à la fin du regex derrière le "/gi":
.... <br>/gis ....
voir aussi http://perl.enstimac.fr/DocFr/perlre.html ++++++++++++++++++++++++++++++++++++++++++ ++ [option] s - Permet de traiter une chaîne comme une seule ++ ligne. Le caractère "." reconnaît alors n'importe quel caractère, ++ même une fin de ligne qui normalement n'est pas reconnue. ++++++++++++++++++++++++++++++++++++++++++
Newsgroups
Le problème est que la construction (.*?) dans la regex ne reconnaît pas les "n", pour que les "n" sont reconnus, il faut rajouter l'option "s" à la fin du regex derrière le "/gi":
ok, ca marche !
merci.
Le problème est que la construction (.*?) dans la regex ne reconnaît
pas les "n", pour que les "n" sont reconnus, il faut rajouter
l'option "s" à la fin du regex derrière le "/gi":
Le problème est que la construction (.*?) dans la regex ne reconnaît pas les "n", pour que les "n" sont reconnus, il faut rajouter l'option "s" à la fin du regex derrière le "/gi":
ok, ca marche !
merci.
Newsgroups
$content = "<p align="left"><font face="Arial Narrow"><br> c'est une Société d'Ingénierie spécialisée dans la réalisation ... Pour plus d'informations :<br></font></p>"; ...
à l'exécution, il ne m'affiche rien ($texte est vide)
Ca s'execute ca ??
Vous avez raison, j'ai simplement simplifié le code pour mon message. En fait, le texte est un open() sur un fichier html local
Soit tu remplaces tes " par ", ou tu fais:
$content = <<EOF <p align="left"><font face="Arial Narrow"><br> c'est une Société d'Ingénierie spécialisée dans la réalisation ... Pour plus d'informations :<br></font></p> EOF
$content = "<p align="left"><font face="Arial Narrow"><br>
c'est une Société d'Ingénierie
spécialisée dans la réalisation ... Pour
plus d'informations :<br></font></p>";
...
à l'exécution, il ne m'affiche rien ($texte est vide)
Ca s'execute ca ??
Vous avez raison, j'ai simplement simplifié le code pour mon message.
En fait, le texte est un open() sur un fichier html local
Soit tu remplaces tes " par ", ou tu fais:
$content = <<EOF
<p align="left"><font face="Arial Narrow"><br>
c'est une Société d'Ingénierie
spécialisée dans la réalisation ... Pour
plus d'informations :<br></font></p>
EOF
$content = "<p align="left"><font face="Arial Narrow"><br> c'est une Société d'Ingénierie spécialisée dans la réalisation ... Pour plus d'informations :<br></font></p>"; ...
à l'exécution, il ne m'affiche rien ($texte est vide)
Ca s'execute ca ??
Vous avez raison, j'ai simplement simplifié le code pour mon message. En fait, le texte est un open() sur un fichier html local
Soit tu remplaces tes " par ", ou tu fais:
$content = <<EOF <p align="left"><font face="Arial Narrow"><br> c'est une Société d'Ingénierie spécialisée dans la réalisation ... Pour plus d'informations :<br></font></p> EOF