Je tente d'exécuter preg_match pour extraire l'attribut SRC de la première balise IMG d'un article (dans ce cas, stocké dans $ row-> introtext).
preg_match('/\< *[img][^\>]*[src] *= *[\"\']{0,1}([^\"\']*)/i', $row->introtext, $matches);
Au lieu d'obtenir quelque chose comme
images/stories/otakuzoku1.jpg
de
<img src="images/stories/otakuzoku1.jpg" border="0" alt="Inside Otakuzoku's store" />
Je viens juste
0
La regex devrait être juste, mais je ne peux pas dire pourquoi elle semble correspondre à l'attribut border et non à l'attribut src.
Sinon, si vous avez eu la patience de lire jusque-là sans passer directement au champ de réponse et en tapant "utiliser un analyseur HTML/XML", un bon tutoriel est-il recommandé, car je ne parviens pas à en trouver un du tout qui soit applicable à PHP 4.
PHP 4.4.7
Votre expression est incorrecte. Essayer:
preg_match('/< *img[^>]*src *= *["\']?([^"\']*)/i', $row->introtext, $matches);
Notez la suppression des crochets autour de img et src et d’autres nettoyages.
Voici un moyen de le faire avec des fonctions intégrées (php> = 4):
$parser = xml_parser_create();
xml_parse_into_struct($parser, $html, $values);
foreach ($values as $key => $val) {
if ($val['tag'] == 'IMG') {
$first_src = $val['attributes']['SRC'];
break;
}
}
echo $first_src; // images/stories/otakuzoku1.jpg
Si vous devez utiliser preg_match()
lui-même, essayez ceci:
preg_match('/(?<!_)src=([\'"])?(.*?)\\1/',$content, $matches);
Essayer:
include ("htmlparser.inc"); // from: http://php-html.sourceforge.net/
$html = 'bla <img src="images/stories/otakuzoku1.jpg" border="0" alt="Inside Otakuzoku\'s store" /> noise <img src="das" /> foo';
$parser = new HtmlParser($html);
while($parser->parse()) {
if($parser->iNodeName == 'img') {
echo $parser->iNodeAttributes['src'];
break;
}
}
qui produira:
images/stories/otakuzoku1.jpg
Cela devrait fonctionner avec PHP 4.x.
La regex que j'ai utilisé était beaucoup plus simple. Mon code suppose que la chaîne qui y est passée contient exactement une balise img sans autre balise:
$pattern = '/src="([^"]*)"/';
Voir ma réponse ici pour plus d'informations: Comment extraire img src, title et alt de html en utilisant php?
Veuillez suivre ces instructions: http://regexlib.com/Search.aspx?k=img&AspxAutoDetectCookieSupport=1