我收到了一堆包含ID的XML文件。 e.g。
<WINE_PRODUCER>9456</WINE_PRODUCER>
我需要检查,例如哪个文件包含WINE_PRODUCER id = 9456:
$content = file_get_contents("my.xml");
$Num = 9456;
$pattern = "<WINE_PRODUCER>$Num<\/WINE_PRODUCER>";
$res = preg_match("$pattern", $content);
我收到错误PHP警告:preg_match(): Unknown modifier '9'
基本上它不喜欢模式中的数字。
我该怎么办?谷歌搜索了很多,但都导致匹配一组数字......
PS:由于性能的原因,我不想在这种情况下使用DOM xml解析器....
答案 0 :(得分:1)
如果您始终需要匹配固定数字,则可以执行strstr
。
$num = 9456;
$find = "<WINE_PRODUCER>". $num . "</WINE_PRODUCER>";
$found = strstr($content, $find) !== false;
要修复正则表达式,您需要指定分隔符:
$pattern = "@<WINE_PRODUCER>$Num<\/WINE_PRODUCER>@";
应该可以工作,但你可能不需要正则表达式。
答案 1 :(得分:1)
尝试:
$pattern = sprintf(preg_quote('<WINE_PRODUCER>%s<\/WINE_PRODUCER>'), $num);
echo '/'.$pattern.'/';