Получить текст между сложными тегами в PHP - PullRequest
0 голосов
/ 15 февраля 2010

Я пытаюсь получить текст между двумя тегами html, только сложность в том, что тег может отличаться от имени.

Я объясню подробно:

<icon displayid="62115">inv_helmet_130</icon>

Я должен получить

inv_helmet_130

Но displayid тега может отличаться, есть идеи, как решить эту проблему? Возможно, с регулярным выражением, но я не очень хорош в этом.

Заранее спасибо.

Ответы [ 3 ]

3 голосов
/ 15 февраля 2010

Простой HTML DOM Parse r должен справиться с этим:

$html = file_get_html('http://www.example.com/');

foreach($html->find('icon') as $element) 
       echo $element->innertext . '<br>';

Вы можете выделить их так:

echo $html->find('icon', 0)->innertext; // get me the first
1 голос
/ 15 февраля 2010

Не используйте регулярные выражения для работы с HTML.

Вместо этого используйте что-то специально разработанное для XML / HTML, например XPath . Он уже является частью библиотек PHP .

Вы хотите, чтобы выражение XPath соответствовало чему-то подобному этому,

//icon/text()

Что гласит: «Выберите текст из любого элемента icon в документе, независимо от его идентификатора или родителей».

0 голосов
/ 15 февраля 2010

Поскольку <icon> не является допустимым тегом HTML, я предполагаю, что вы работаете с XML или другим языком разметки. PHP имеет довольно удобное расширение для работы с XML:

<?php

$xml = simplexml_load_string('<?xml version="1.0"?><icon displayid="62115">inv_helmet_130</icon>');
echo (string)$xml[0];

?>

Точный код, конечно, зависит от вашей точной строки. Как и предполагалось, поиск в xpath может помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...