Проверить тег и получить значение внутри тега с помощью PHP

Я смутился. Итак, вот моя проблема, у меня есть такой текст:

<ORGANIZATION>Head of Pekalongan Regency</ORGANIZATION>, Dra. Hj.. Siti Qomariyah , MA and her staff were greeted by <ORGANIZATION>Rector of IPB</ORGANIZATION> Prof. Dr. Ir. H. Herry Suhardiyanto , M.Sc. and <ORGANIZATION>officials of IPB</ORGANIZATION> in the guest room. 

Я пытаюсь получить значение внутри <ORGANIZATION> используя мой код:

 function get_text_between_tags($string, $tagname) { $pattern = "/<$tagname ?.*>(.*)<\/$tagname>/"; preg_match($pattern, $string, $matches); if(!empty($matches[1])) return $matches[1]; } 

Но этот код извлекает только одно значение из последнего тега ( officials of IPB ), когда есть 3 <ORGANIZATION> .

Теперь у меня нет идеи модифицировать этот код, чтобы получить всю ценность внутри тега без дублирования. Поэтому, пожалуйста, помогите, спасибо заранее. : D

preg_match вернет только первое совпадение, и ваш текущий код не будет выполнен, если:

  • Тег не находится в верхнем регистре таким же образом
  • Содержимое тега находится на нескольких строках
  • В одной строке есть несколько тегов.

Вместо этого попробуйте следующее:

 function get_text_between_tags($string, $tagname) { $pattern = "/<$tagname\b[^>]*>(.*?)<\/$tagname>/is"; preg_match_all($pattern, $string, $matches); if(!empty($matches[1])) return $matches[1]; return array(); } 

Это допустимое использование регулярных выражений для синтаксического анализа, поскольку это четко определенный случай. Обратите внимание, однако, что он не сработает, если по какой-либо причине существует значение внутри атрибута тега.

Если вы предпочитаете избегать гнева пони , попробуйте это:

 function get_text_between_tags($string, $tagname) { $dom = new DOMDocument(); $dom->loadHTML($string); $tags = $dom->getElementsByTagName($tagname); $out = array(); $length = $tags->length; for( $i=0; $i<$length; $i++) $out[] = $tags->item($i)->nodeValue; return $out; } 

Вы попробовали strip_tags() ?

 <?php $s = "<ORGANIZATION>Head of Pekalongan Regency</ORGANIZATION>, Dra. Hj.. Siti Qomariyah , MA and her staff were greeted by <ORGANIZATION>Rector of IPB</ORGANIZATION> Prof. Dr. Ir. H. Herry Suhardiyanto , M.Sc. and <ORGANIZATION>officials of IPB</ORGANIZATION> in the guest room."; $r = strip_tags($s); var_dump($r); ?> 

демонстрация