Это довольно сложная задача, и хотя регулярное выражение может показаться более простым, оно слишком проблематично. Следующий код будет проходить через XML-файл (называемый some.xml , но вам, очевидно, потребуется это изменить) и собирать источники изображений в массив $images
.
$images = array();
$doc = new DOMDocument();
$doc->load('some.xml');
$descriptions = $doc->getElementsByTagName("description");
foreach ($descriptions as $description) {
foreach($description->childNodes as $child) {
if ($child->nodeType == XML_CDATA_SECTION_NODE) {
$html = new DOMDocument();
@$html->loadHTML($child->textContent);
$imgs = $html->getElementsByTagName('img');
foreach($imgs as $img) {
$images[] = $img->getAttribute('src');
}
}
}
}
Я проверил его по предоставленному вами XML и получил следующий результат:
Array
(
[0] => http://2010.pcnews.am/images/stories/2011/internet/chinese-computer-user-smoke.jpg
)
Я помещаю его в массив, если имеется более одного description
с изображениями.