我知道我的问题好像重复了。。。但特别的是,我并没有试图解析"True/Valid"HTML,它是javascript变量/或HTML标签的一部分,请参阅我的示例:
<td width="10"></td>
<td ><div id="combo_rub" style="CURSOR:pointer"></div><input type="hidden" id="rech_cod_cat" name="rech_cod_cat" value="1"/></td>
<td ><div id="combo_typ" style="CURSOR:pointer"></div></td>
<td ><div id="combo_sou_typ" style="CURSOR:pointer"></div></td>
<script type="text/javascript">
d_rech_cod_rub = "101";
d_rech_cod_typ = "1";
d_rech_cod_sou_typ = "1020121";
//ComboBox sous_type
var z_sou_typ=new dhtmlXCombo("combo_sou_typ","rech_cod_sou_typ",160);
因此,我希望在我的代码PHP中从Javascript部分检索(d_rech_cod_rub
,d_rech_cod_typ
,d_rech_cod_sou_typ
)的值,而不是从HTML中检索,正如您所看到的。。。
第二种情况是:
<td><a href="AnnoncesImmobilier.asp?rech_cod_rub=101&rech_cod_typ=1">
<font color="#2154eb">Location (6920)</font></a> </td></tr></table></td></tr>
<tr><td><table width="100%" cellpadding="0" cellspacing="0"><tr>
<td><a href="AnnoncesImmobilier.asp?rech_cod_rub=101&rech_cod_typ=5"></td>
这里也是,我需要检索"101"值。。。
最后,完整的故事:我经常使用PHP的Curl扩展,然后我遇到了类似上面例子的内容。。。问题是当我使用像这样的HTML解析器时(http://simplehtmldom.sourceforge.net/)我不能用它来完成我的工作,因为它只能用有效的HTML..:(我的问题是:有什么解决方案可以以稳定的方式检索值?如果你遇到像我这样的案子,你在做什么?
谢谢大家。
编辑:所以根据大多数答案,使用RegX可以完成任务。。。
以下正则表达式实现
d_rech_cod_[a-z_ ]*= "([0-9]*)";
rech_cod_rub=([0-9]*)
不确定PHP,但您可以使用以下代码对其进行评估:
preg_match($regex, $content, $matches);
print($matches[1]);
如果你只想要这个值,那么使用正则表达式就很容易了:
d_rech_cod_rub's*='s*"([0-9]+)";
第一个捕获组是您的价值所在。
在更具体的答案中,正则表达式不能处理嵌套信息。
例如。。。
<span>Hello <span>World</span></span>
查找<span>.*<'/span>
的正则表达式将返回:
<span>Hello <span>World</span>
我们甚至不会提及试图处理带有缺失标签的无效HTML。
像这样的东西(loadHTML
)可能正是你想要的。
我不确定是否可以用一个正则表达式来做你想做的事情,但每个变量用一个规则表达式肯定是可能的。还可以使用strpos
函数来解析字符串。在这里,第二种方法可能是更有效的方法。