我知道我的问题似乎是重复的(duplicate)... 但特别是我不是要解析“真/有效”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);
所以我在我的代码中想要的是从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-Parser时({{3} })我无法完成我的工作,因为它只适用于有效的HTML .. :( 我的问题:有任何解决方案以稳定的方式检索值吗? 如果遇到像我这样的案子,你在做什么?
谢谢你们。
编辑:所以根据大多数答案,使用RegX可以做到这一点......
答案 0 :(得分:2)
如果您想要的只是那个值,那么就可以很容易地使用正则表达式:
d_rech_cod_rub\s*=\s*"([0-9]+)";
第一个捕获组是你的价值。
答案 1 :(得分:2)
以下正则表达式诀窍
d_rech_cod_[a-z_ ]*= "([0-9]*)";
rech_cod_rub=([0-9]*)
不确定PHP,但您可以使用以下代码对其进行评估:
preg_match($regex, $content, $matches);
print($matches[1]);
答案 2 :(得分:2)
在更具体的答案中,正则表达式无法处理嵌套信息。
例如......
<span>Hello <span>World</span></span>
查找<span>.*<\/span>
的正则表达式将返回:
<span>Hello <span>World</span>
我们甚至没有提及尝试使用缺少的标签来处理无效的HTML。
像this (loadHTML
)这样的东西可能就是你想要的东西。
答案 3 :(得分:1)
我不确定是否可以使用一个正则表达式执行您想要的操作,但当然每个变量使用一个正则表达式。也可以使用strpos
函数来解析字符串。这里第二种方法可能是更有效的方法。