在PHP中获取复杂标记之间的文本

在PHP中获取复杂标记之间的文本,php,regex,tags,expression,Php,Regex,Tags,Expression,我试图从两个html标记之间获取文本,唯一的困难是标记可能与名称不同 我会详细解释: <icon displayid="62115">inv_helmet_130</icon> inv\u头盔\u 130 我得去拿票 inv_头盔_130 但是标签的displayid可以不同,如何解决这个问题呢?也许是有规律的解释,但我不擅长这些 提前感谢。不要使用正则表达式处理HTML 使用专门为XML/HTML设计的东西,例如。它已经是我们的一部分 您想要的XPath表达式将与以

我试图从两个html标记之间获取文本,唯一的困难是标记可能与名称不同

我会详细解释:

<icon displayid="62115">inv_helmet_130</icon>
inv\u头盔\u 130
我得去拿票

inv_头盔_130

但是标签的displayid可以不同,如何解决这个问题呢?也许是有规律的解释,但我不擅长这些


提前感谢。

不要使用正则表达式处理HTML

使用专门为XML/HTML设计的东西,例如。它已经是我们的一部分

您想要的XPath表达式将与以下内容类似:

//icon/text()

它的内容是:“从文档中的任何
图标
元素中选择文本,无论其id或父元素如何。”

不要使用正则表达式处理HTML

使用专门为XML/HTML设计的东西,例如。它已经是我们的一部分

您想要的XPath表达式将与以下内容类似:

//icon/text()
它的内容是:“从文档中的任何
图标
元素中选择文本,而不管其id或父元素如何。”

r应该能够处理:

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

foreach($html->find('icon') as $element) 
       echo $element->innertext . '<br>';
r应能够处理以下问题:

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

foreach($html->find('icon') as $element) 
       echo $element->innertext . '<br>';
由于
不是有效的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搜索可以做到这一点。

因为
不是有效的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搜索可以做到这一点。

看起来您正在尝试解析XML。您考虑过XML解析器吗?不同吗?因此,如果不是“62115”,那么您就不想获取数据了?看起来您正在尝试解析XML。您考虑过XML解析器吗?不同吗?所以如果不是“62115”,那么你不想得到数据?