我有以下代码:
$url = "http://www.example.com/url.html";
$content=Encode::encode_utf8(get $url);
$nameaux = Encode::encode_utf8($DBfield);
if($content =~ />$nameaux<\/a><\/td><td class="class1">(.*?)<\/td>/ ||
$content =~ />$nameaux<\/a><\/td><td class="class2">(.*?)<\/td>/ ||
$content =~ />$nameaux<\/a><\/td><td class="class3">(.*?)<\/td>/ ) {
... more code ...
}
除非$DBfield
等于$content
上存在的包含加号(例如A + 1)的字符串,否则这段代码效果很好。
有人可以解释我如何处理这个问题吗?
答案 0 :(得分:5)
如果$ nameaux可以包含正则表达式字符(例如+),则需要通过使用\Q
... \E
换行将字段转义为正则表达式文字。
$content =~ />\Q$nameaux\E<\/a><\/td><td class="class1">(.*?)<\/td>/ ||
所以+
只是一个加号而不是&#34;一个或多个&#34;,这就是你的正则表达式不匹配的原因。