0

我得到了一堆包含 ID 的 XML 文件。例如

<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 解析器....

4

2 回答 2

1

如果你总是需要匹配一个固定的数字,你可以做一个strstr.

$num = 9456;
$find = "<WINE_PRODUCER>". $num . "</WINE_PRODUCER>";
$found = strstr($content, $find) !== false;

要修复您的正则表达式,您需要指定分隔符:

$pattern = "@<WINE_PRODUCER>$Num<\/WINE_PRODUCER>@";

应该可以,但是您可能不需要正则表达式。

于 2013-08-05T15:48:58.717 回答
1

尝试:

$pattern = sprintf(preg_quote('<WINE_PRODUCER>%s<\/WINE_PRODUCER>'), $num);

echo '/'.$pattern.'/';
于 2013-08-05T15:52:17.520 回答