2013-08-05 2 views
0

У меня есть куча XML-файлов, содержащих ID. напримерphp соответствует заданному числу

<WINE_PRODUCER>9456</WINE_PRODUCER> 

Мне нужно проверить, например. какой файл содержит идентификатор WINE_PRODUCER = 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 Parser в этом случае из-за производительности ....

+0

Вы на платформе Unix/Linux и вы можете использовать такие инструменты, как Grep? –

+0

вы можете использовать strpos для выполнения того же самого. '$ res = strpos (" $ Num <\/WINE_PRODUCER> ", $ content);' Для проверки: 'if ($ res! == false) {// найден}}' – Orangepill

ответ

1

Если вы всегда должны соответствовать фиксированное число, вы можете просто сделать strstr.

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

Чтобы исправить регулярное выражение, необходимо указать разделители:

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

должен работать, но вы, вероятно, не нужно регулярное выражение.

1

Try:

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

echo '/'.$pattern.'/';