Bonjour,
Je suis actuellement en train de travailler sur mon PFE. Une des étapes consistera à remplir une base de donnée en récupérant les informations d'une autre page qui elle est statique.
Pour parser la page statique j'utilise un parseur qui se nomme Simple HTML Dom. J'ai bien réussi à récupérer les nœuds qui m'intéressait et en faire une requête SQL monstrueuse mais quand j'insère cette requête dans phpmyadmin une erreur survient à laquelle je n'avais pas pensé.
J'ai un champ description que je dois remplir avec certaines informations mais ces informations contiennent bien souvent des apostrophes qui termine prématurément ma chaine de caractère si je puis dire et ainsi sort du paramètre de la requête SQL faisant ainsi tout caboter.
Je ne sais pas si vous comprenez bien, je vous met le code php pour mieux vous illustrez mon problème :
Par exemple quand je récupère les informations de la balise body (c'est une annexe que je fais en fait) j’obtiens ceci :
('', 'Balise : body', 'body englobe le corps du document et regroupe ainsi le contenu de la page (l'information) et sa structure. ', '', '', '', 'xhtml', '', '')
Ici la requête est « cassée » au niveau de l’apostrophe du mot information.
La question est la suivante, y a-t-il une façon de contourner ce problème sans devoir réécrire tout à la main ?
Merci d'avance
Modifié par Gili (24 Dec 2011 - 13:57)
Je suis actuellement en train de travailler sur mon PFE. Une des étapes consistera à remplir une base de donnée en récupérant les informations d'une autre page qui elle est statique.
Pour parser la page statique j'utilise un parseur qui se nomme Simple HTML Dom. J'ai bien réussi à récupérer les nœuds qui m'intéressait et en faire une requête SQL monstrueuse mais quand j'insère cette requête dans phpmyadmin une erreur survient à laquelle je n'avais pas pensé.
J'ai un champ description que je dois remplir avec certaines informations mais ces informations contiennent bien souvent des apostrophes qui termine prématurément ma chaine de caractère si je puis dire et ainsi sort du paramètre de la requête SQL faisant ainsi tout caboter.
Je ne sais pas si vous comprenez bien, je vous met le code php pour mieux vous illustrez mon problème :
INSERT INTO `annexe`.`balises`
(`id_balises`, `nom`, `description`, `contenu`, `exemple`, `groupe`, `language`, `regle_contenu`, `schema`) VALUES
<?php
include('../simple_html_dom.php');
$html = file_get_html('http://www.nicolasgilis.be/tfe/annexev1/');
foreach($html->find('table.balise') as $balise)
{
$nom_balise = $balise->find('caption');
$schema = $balise->find('td.schema');
$dtd = $balise->find('td.dtd');
$desc = '';
foreach($balise->find('td.description') as $description)
{
$desc.=$description;
}
$groupeAttrs = ' ';
foreach($balise->find('th.groupe-attribut') as $groupeAttr)
{
$groupeAttrs .= ' ' . $groupeAttr;
}
$attrIsolesNom = ' ';
foreach($balise->find('th.attribut, td.type-nomme-valeur, td.propriete, td.description-attribut') as $attrIsoleNom)
{
$attrIsolesNom .= ' ' . $attrIsoleNom ;
}
?>
('', '<?php echo $nom_balise[0];?>', '<?php echo $desc ?>', '', '', '', 'xhtml', '<?php echo $dtd[0] ?>', '<?php echo $schema[0] ?>'),
<?php
}
?>
Par exemple quand je récupère les informations de la balise body (c'est une annexe que je fais en fait) j’obtiens ceci :
('', 'Balise : body', 'body englobe le corps du document et regroupe ainsi le contenu de la page (l'information) et sa structure. ', '', '', '', 'xhtml', '', '')
Ici la requête est « cassée » au niveau de l’apostrophe du mot information.
La question est la suivante, y a-t-il une façon de contourner ce problème sans devoir réécrire tout à la main ?
Merci d'avance
Modifié par Gili (24 Dec 2011 - 13:57)