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

问题描述:

我试图从2个html标签中获取文本,只是难度在于标签可能与名称不同。在PHP中的复杂标签之间获取文本

我会解释成细节:

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

我必须得到

inv_helmet_130

displayid标签可以不同的,对任何想法如何解决这个问题?也许是经常爆发,但我不擅长这些。

在此先感谢。

+1

它看起来像你试图解析XML。你有没有考虑过XML解析器? – 2010-02-15 16:27:24

+1

不同?所以如果它不是“62115”,那么你不想获取数据? – ghostdog74 2010-02-15 16:28:51

Simple 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 
+0

谢谢你做到了! – 2010-02-15 16:42:14

+0

谢谢。这工作。 :) – apis17 2011-06-13 05:05:17

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

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

你想是要沿着这个东西线的XPath表达式,

//icon/text() 

其内容,从“选择任何icon元素的文档中的文本,而不管其ID或父母。”

+0

谢谢,我想我可以用它来解决这个问题。 – 2010-02-15 16:31:41

由于<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搜索可以做到这一点。