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 に答える