【问题标题】:Get text between complex tags in PHP在 PHP 中获取复杂标签之间的文本
【发布时间】:2010-02-15 16:25:45
【问题描述】:

我正在尝试从 2 个 html 标签之间获取文本,唯一的困难是标签可以与名称不同。

我会详细解释:

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

我必须得到

inv_helmet_130

但是标签的 displayid 可能会有所不同,有什么解决方法的想法吗?也许有一个常规的表达,但我不擅长这些。

提前致谢。

【问题讨论】:

  • 您似乎正在尝试解析 XML。你考虑过 XML 解析器吗?
  • 不同?所以如果不是“62115”,那么你不想获取数据?

标签: php regex tags expression


【解决方案1】:

Simple HTML DOM Parser 应该能够处理:

$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

【讨论】:

    【解决方案2】:

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

    改用专门为 XML/HTML 设计的东西,例如 XPath。它已经是PHP's libraries 的一部分。

    您想要的 XPath 表达式与此类似,

    //icon/text()
    

    其内容为“从文档中的任何 icon 元素中选择文本,无论其 id 或父元素如何。”

    【讨论】:

      【解决方案3】:

      由于&lt;icon&gt; 不是有效的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 搜索可以解决问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-02-10
        • 1970-01-01
        • 1970-01-01
        • 2011-06-01
        相关资源
        最近更新 更多