0

我知道我的问题似乎是重复的(重复)......但特别是我没有尝试解析“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 部分而不是从 HTML 中检索 ( d_rech_cod_rub, d_rech_cod_typ, d_rech_cod_sou_typ) 的值,如您所见...

第二种情况是:

<td><a href="AnnoncesImmobilier.asp?rech_cod_rub=101&amp;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&amp;rech_cod_typ=5"></td>      

同样在这里我需要检索'101'值......

最后,完整的故事:我经常使用 PHP 的 Curl 扩展,然后遇到类似上述示例的内容......问题是当我使用 HTML 解析器(如http://simplehtmldom.sourceforge .net/)我无法完成我的工作,因为它只适用于有效的 HTML ..:( 我的问题:有任何解决方案可以稳定地检索值吗?如果你遇到一个像我这样的情况?

多谢你们。

编辑:所以根据大多数答案,使用 RegX 可以解决问题......

4

4 回答 4

2

如果你想要的只是那个值,那么就很容易使用正则表达式:

d_rech_cod_rub\s*=\s*"([0-9]+)";

第一个捕获组是您的价值所在。

于 2012-08-24T13:37:44.457 回答
2

以下正则表达式可以解决问题

d_rech_cod_[a-z_ ]*= "([0-9]*)";
rech_cod_rub=([0-9]*)

不确定 PHP,但您可以使用以下代码对其进行评估:

preg_match($regex, $content, $matches);
print($matches[1]);
于 2012-08-24T13:38:17.313 回答
2

在更具体的答案中,正则表达式无法处理嵌套信息。

例如 ...

<span>Hello <span>World</span></span>

查找的正则表达式<span>.*<\/span>将返回:

<span>Hello <span>World</span>

我们甚至不会提及尝试处理缺少标签的无效 HTML。

这样的 ( loadHTML)可能是您想要的。

于 2012-08-24T13:40:26.777 回答
1

我不确定是否可以使用一个正则表达式来做你想做的事情,但肯定可以使用每个变量一个正则表达式。也可以使用strpos函数来解析字符串。这里第二种方法可能是更有效的方法。

于 2012-08-24T13:36:30.247 回答