Я хочу получить текст в массиве между всеми тегами <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.
вам нужно переключиться на функцию preg_match_all
Код
$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
все ваши совпадения
используйте preg_match_all()
это то же самое, он вернет все вхождения в массив $ matches
вот код для получения всего значения 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 индекс
Если вы не возражаете против использования стороннего компонента, я бы хотел показать вам компонент Symfony DomCrawler . Это очень простой способ разобрать HTML / XHTML / XML-файлы и перемещаться по узлам.
Вы даже можете использовать CSS Selectors. Ваш код будет примерно таким:
$crawler = new Crawler($html); $spans = $crawler->filter("span"); echo $spans[1]->getText();;
Вам даже не нужно иметь полный HTML / XML-документ, если вы назначаете только часть <span>...</span>
своего кода, он будет работать нормально.