2016-06-07 2 views
1

Я хочу использовать регулярные выражения в PHP, чтобы проверить, имеет ли текст как минимум два абзаца, первое начало с «Фактически» и другое начало с «Я предлагаю».Проверка некоторых выражений в параграфах с использованием регулярных выражений с помощью PHP

Например, я испытал это:

$text = "In fact Paris is more beautiful than Berlin. 
I suggest we go to Paris this summer." 
$value = preg_match ("/ (^ In fact (.)) (I suggest). * /", $text); 
echo $value; 
I get $value = 0; 

Я получаю $ значение = 0;

Я не знаю, почему, пожалуйста, помогите.

+0

Использование на из онлайн-тестеров REGEX разработать некоторые Regex Foo: https://regex101.com/ – pintxo

ответ

1

Это должно сработать.

$text = "In fact Paris is more beautiful than Berlin. 
I suggest we go to Paris this summer."; 
if(preg_match ("/^In fact(.*)I suggest/s", $text)){ 
echo 'true'; 
} else { 
echo 'false'; 
} 

В своем регулярном выражении это . * это позволяет одному из любых символов . тогда любое число пробелов *. Это (.) позволяет одно пространство.

Я не вижу, что вы пытаетесь захватить, поэтому я удалил ваши группы захвата. Модификатор s позволяет . соответствовать новым строкам.

Regex Демо: https://regex101.com/r/vW2oZ8/1
PHP Демо: https://eval.in/584773

+0

Спасибо, работает отлично –

2

Вы должны добавить модификатор \s и квантор * (example)

(^In fact (.*))\s(I suggest(.*)) 

В \s соответствует любому пробелу, как \n и \r, пучок новой строки. Ваш код должен выглядеть, как это сейчас:

$value = preg_match ("/(^In fact (.*))\s(I suggest(.*))/", $text); 

$value Теперь будет 1.