php匹配给定的数字

时间:2013-08-05 15:47:24

标签: php pattern-matching

我收到了一堆包含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解析器....

2 个答案:

答案 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.'/';