Как получить текст в массиве между всеми тегами <span> из HTML?
Я хочу получить текст в массиве между всеми тегами <span> </span>
из HTML, я попытался с этим кодом, но он возвращает только одно вхождение:
preg_match('/<span>(.+?)<\/span>/is', $row['tbl_highlighted_icon_content'], $matches);
echo $matches[1];
Мой HTML:
<span>The wish to</span> be unfairly treated is a compromise attempt that would COMBINE attack <span>and innocen</span>ce. Who can combine the wholly incompatible, and make a unity of what can NEVER j<span>oin? Walk </span>you the gentle way,
Мой код возвращает только одно вхождение тега span, но я хочу получить весь текст из каждого тега span в HTML в форме php-массива.
Ответы
Ответ 1
вам нужно переключиться на preg_match_all function
код
$row['tbl_highlighted_icon_content'] = '<span>The wish to</span> be unfairly treated is a compromise attempt that would COMBINE attack <span>and innocen</span>ce. Who can combine the wholly incompatible, and make a unity of what can NEVER j<span>oin? Walk </span>you the gentle way,';
preg_match_all('/<span>.*?<\/span>/is', $row['tbl_highlighted_icon_content'], $matches);
var_dump($matches);
как вы теперь видите, array
правильно заполнен, поэтому вы можете echo
выполнить все ваши совпадения
Ответ 2
используйте preg_match_all()
то же самое, он вернет все вхождения в массив $matches
http://php.net/manual/en/function.preg-match-all.php
Ответ 3
вот код для получения всего значения span в массиве
$str = "<span>The wish to</span> be unfairly treated is a compromise
attempt that would COMBINE attack <span>and innocen</span>ce.
Who can combine the wholly incompatible, and make a unity
of what can NEVER j<span>oin? Walk </span>you the gentle way,";
preg_match_all("/<span>(.+?)<\/span>/is", $str, $matches);
echo "<pre>";
print_r($matches);
вывод будет
Array
(
[0] => Array
(
[0] => The wish to
[1] => and innocen
[2] => oin? Walk
)
[1] => Array
(
[0] => The wish to
[1] => and innocen
[2] => oin? Walk
)
)
вы можете использовать o или 1 индекс
Ответ 4
Если вы не против использования стороннего компонента, я хотел бы показать вам компонент Symfony DomCrawler. Это очень простой способ проанализировать файлы HTML/XHTML/XML и перемещаться по узлам.
Вы даже можете использовать CSS Selectors. Ваш код будет примерно таким:
$crawler = new Crawler($html);
$spans = $crawler->filter("span");
echo $spans[1]->getText();;
Вам даже не нужно иметь полный HTML/XML-документ, если вы назначаете только часть <span>...</span>
вашего кода, он будет работать нормально.