Gerçekten şeyler bu tür için regex kullanmak gerekir: HTML düzenli ifadeler için oldukça değil regular enough olduğunu ...
Ne varsa, örneğin, onlardan biri:
<img src="..." />
<img src='...' />
<img src="...">
<img src="..." alt="..." />
<img alt="..." src="..." />
<img alt="..." src="..." style="..." />
Instead, you should use an HTML parser, like, for instance, DOMDocument::loadHTML
.
HTML belge DOMDocument olarak yüklendikten sonra aldığımızda, size XPath sorguları kullanabilirsiniz, ya da ihtiyaç belirli bilgileri ayıklamak için, DOM geçmesi.
For instance, considering you have this portion of HTML in a variable :
$html = <<<HTML
<p>test</p>
<img src="http://www.example.com/image-1.png" />
plop glop
<img alt="booh" src="http://www.example.com/image-2.png" />
huhu ?
<img alt="booh again" src='http://www.example.com/image-3.jpg' />
HTML;
Şunları yapabilirsiniz:
- Instanciate
DOMDocument
- değişkeni HTML yüklemeyi
- Tüm
img
etiketleri almak için getElementsByTagName
yöntemini kullanın
- ve
getAttribute
yöntemi ile, her biri src
öznitelik elde
Hangi bu gibi bazı kod anlamına gelir:
$dom = new DOMDocument();
$dom->loadHTML($html);
$nodes = $dom->getElementsByTagName('img');
foreach ($nodes as $img) {
var_dump($img->getAttribute('src'));
}
Ve sen almak çıkışına bu gibi görünecektir:
string 'http://www.example.com/image-1.png' (length=34)
string 'http://www.example.com/image-2.png' (length=34)
string 'http://www.example.com/image-3.jpg' (length=34)
Not really hard to write -- and it should work much better than regexes, when it comes to extracting data from an HTML document !