我想在preg_match_all的模式中包含变量。我已经尝试了几种方法,而且它们都不起作用 - 即使这种模式在回声上是正确的。如何在php中使用preg_match_all中的变量失败?
这是我有:
第一次尝试(使用单引号是安全的):
$pattern_areacode = '/\<a name\=\"'. $code . '\"\>'. $code . '\<\/a\>.*?(\<td\b[^>]*\> (.*?)\<\/td\>).*?<\/tr\>/';
preg_match_all($pattern_areacode, $contents, $ac_match);
问题:我打印的模式,它看起来很好。然而它并没有返回任何结果。
第二次尝试(使用双):
$pattern_areacode = "/\<a name\=\"$code\"\>$code\<\/a\>.*?(\<td\b[^>]*\>(.*?)\<\/td\>).*?<\/tr\>/";
preg_match_all($pattern_areacode, $contents, $ac_match);
问题:双引号前$得到逃脱。奇怪的。
我做了我的研究,并尝试了其他一些方法,包括使用大括号{},但无济于事。
我如何得到这个工作?
谢谢!
另请参见[你能提供一些例子为什么很难用正则表达式分析XML和HTML?](http://stackoverflow.com/questions/701166/can-you-provide-some-examples-of-why-it-is-hard-to-parse -xml-and-html-with-a-reg) – deceze 2012-03-01 01:44:52
“它看起来很好”。它显然不是很好。否则会起作用。 – 2012-03-01 01:44:55
看起来你有点过分偏执,你的逃跑在那里。我不认为你需要转义'<或'='。如果您可以给我们提供'$ code'和'$ contents'的示例值,那么我们可以更容易地提供帮助。 – 2012-03-01 01:45:24