【发布时间】:2012-08-24 13:29:56
【问题描述】:
我知道我的问题似乎重复了(duplicate)... 但特别是我并没有尝试解析“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 中检索 (d_rech_cod_rub, d_rech_cod_typ, d_rech_cod_sou_typ) 从 Javascript 部分的值,而不是从 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 可以解决问题...
【问题讨论】:
-
使用更宽容的 html 解析器。你认为浏览器遇到那个 html 时在做什么?
-
@Jocelyn:正如我在我的问题中已经说过的不是重复的问题,我不想解析 HTML 标签,只是文本的一小部分
-
由于您的文本位于包含 HTML 标签的文件中,我认为使用正则表达式不是一个好主意。这就是我链接到的页面上的解释。
-
JS的问题和(X)HTML的问题几乎一模一样。 JS 不是常规语言(它是上下文无关的,AFAIK),并且 RE 往往不擅长解析非常规语言。过了某个点,即使使用我们现代增强的“RE”,这也是不可能的……甚至在此之前,你会沮丧地扯掉你的头发。如果您有一个已知样本,并且无法容忍偏差,那么您可以轻松获取特定的文本块...但是您想要的越通用,RE 的用处就越少get -- 使用真正的解析器越容易。
标签: php regex html-parsing