Preg матч не совпадает, не могу понять, почему - PullRequest
0 голосов
/ 23 мая 2011

Я использую веб-сайт RegEx Helper (http://regexpal.com/), и

ENTER.+Security

соответствует следующему:

ENTER Разведывательная группа с открытым исходным кодом LSU Центр здоровья животных, безопасности пищевых продуктов и биологической безопасности

Тем не менее, PHP не будет preg_match, и я не могу понять, я пытался в течение нескольких часов, и я чувствую себя действительно глупо, что я не могу подобрать этот маленький кусочек.

Это кому-нибудь понятно почему? Я перепробовал все виды комбинаций, но самое большее, что я могу сделать, это соответствовать ENTER. Это особенно расстраивает, потому что это мой самый короткий и простой RegEx на данный момент, но он просто не будет соответствовать.

Код

$title = '/(ENTER.+Security)/';


$file = shell_exec('pdf2txt.py docs/April.pdf');
preg_match_all($title, $file, $m);

print_r($m[0]);

Когда я удаляю часть preg_match и просто печатаю файл $, появляются десятки визуальных совпадений, но они просто не будут соответствовать программно.

Все, что я вижу, это:

Array ( ) 

Но текст, которому он должен соответствовать, находится здесь:

... /March/17031101.asp (по состоянию на 4 апреля 2011 г.). Всемирная организация здоровья. Государственная еда и Администрация лекарств получает одобрение ВОЗ на систему регулирования вакцин. 1 марта, 2011. http://www.wpro.who.int/china/media_centre/press_releases/PR_20110301.htm (по состоянию на 4 апреля 2011 г.) ENTER Разведывательная группа с открытым исходным кодом LSU Центр животных Здоровье, безопасность пищевых продуктов и биобезопасность Специальный отчет по интересам - оповещение Южная Корея - Проблемы с маркировкой в ​​смеси для пшеничной муки ...

Ответы [ 2 ]

2 голосов
/ 23 мая 2011

Попробуйте учесть несколько строк.Когда вы вставляете его на этот сайт, есть хороший шанс, что он удаляет любые разрывы строк.

preg_match('/ENTER.+Security/m',$str) //note the /m

Косая черта в примере - это разделитель.Следующий m указывает, что он соответствует нескольким строкам.

2 голосов
/ 23 мая 2011

Не видя код, сложно точно знать, что происходит, но я предполагаю, что вы неправильно определяете выражение.Попробуйте это:

preg_match('#ENTER.+Security#', $str);
...