2011-02-23 70 views
1

我需要提取xhpc_composerid和目标ID的值的Facebook的preg_match PHP问题

我采用php这样做

它是格式的

\" name=\"xhpc_composerid\" value=\"u195493_3\" \/>\u003cinput type=\"hidden\" autocomplete=\"off\" name=\"xhpc_targetid\" value=\"599498849\" \/>\u003cinput type=\"hidden\" autocomplete=\"off\" name=\"xhpc_context\" value=\ 

我使用的正则表达式

preg_match_all("/\\\"xhpc_composerid\\\" value=\\\"(.*?)\\\"/",$proPage,$xhpc_composerid); 

其中proPage包含页面数据,但不知道为什么我没有得到任何结果$ xh pc_composerid我做错了什么?

+6

任何不使用HTML解析器的原因? – 2011-02-23 09:53:08

+0

我认为我们应该有一个关于html解析问题的新的密切原因,并带有一个指向这个页面的链接:http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained -tags/1732454#1732454 – greg0ire 2011-02-23 10:01:41

+1

@ greg0ire不,我们不应该,因为接受的答案是错误的。你*可以*用正则表达式解析HTML。在大多数情况下,你不应该这样做,因为解析HTML是一个解决的问题,并且有解析器可以比用户通常提出的更可靠。如果你想链接到任何东西,请链接到[最佳方法来解析HTML](http://stackoverflow.com/questions/3577641/best-methods-to-parse-html/3577662#3577662)或[强大和成熟的HTML解析器](http://stackoverflow.com/questions/292926/robust-mature-html-parser-for-php) – Gordon 2011-02-23 10:08:10

回答

1

这正则表达式的工作对我来说你例子:

 
\\"xhpc_composerid\\" value=\\"(.+?)\\" 

但通常你应该使用HTML解析器从HTML获取数据。因为如果名称和值属性变为颠倒或者其他属性在中间变成了什么?

0

var_dump($ xhpc_composerid);

并让我们知道它有什么价值。

正则表达式确实有效。