После просмотра некоторых ответов на stackoverflow,
preg_match_all('/<img[^>]+>/i',$html, $result);
$img = array();
foreach( $result[0] as $img_tag)
{
preg_match_all('/(title)=("[^"]*")/i',$img_tag, $img[$img_tag]);
}
//print_r($img);
foreach ($img as $imgg)
echo $imgg[2][0];
Вышеупомянутый код находит img заголовок, но однако он возвращается как "Waterfall fountain"
вместо Waterfall fountain
, уведомление там "
что я должен добавить в regex для удаления "
?
Спасибо
переместите кавычки за пределы скобок
preg_match_all('/(title)="([^"]*)"/i',$img_tag, $img[$img_tag]);
Используйте синтаксический анализатор XML и этот XPath, чтобы получить все заголовки элементов img:
//img/@title
Пример с DOM
$dom = new DOMDocument;
$dom->loadHML($html);
$xp = new DOMXPath($dom);
foreach($xp->query('//img/@title') as $attribute) {
echo $attribute->nodeValue;
}
Дополнительные материалы для чтения:
Сейчас вы делаете "
частью запоминаемого соответствия. Вы можете поставить кавычки вне скобки:
preg_match_all('/(title)="([^"]*)"/i',$img_tag, $img[$img_tag]);
Просто переместите "
из группы захвата:
'/(title)="([^"]*)"/i'
Скобки в регулярном выражении образуют группу захвата, которая определяет, что будет сохраняться в $ img [$ img_tag]
. Ваша группа включала цитаты: ("[^"] * ")
. Если вам не нужны кавычки, просто переместите их за пределы группы: " ([^ "] *)"
Переместите кавычки за скобки.
Проверьте это:
preg_match_all('/(title)="([^"]*)"/i',$img_tag, $img[$img_tag]);