2015-09-08 3 views
1

Я пытаюсь найти часть строки между словом «мой» и «есть» или «мой» и «есть» с preg_match_all, но по какой-то причине он не найти любой матч. Я не уверен, что я сделал не так. Пожалуйста, обратите внимание на мой код:Соответствующие слова между двумя словами с preg_match_all

$tempText = "My hair is black."; 

if ($matches == null) { 
$matches = preg_match_all('/my\\s+(.+?)\\s+is/', $tempText, $matches); 
$matches = $matches[1][0]; 
} 

if ($matches == null) { 
$matches = preg_match_all('/my\\s+(.+?)\\s+are/', $tempText, $matches); 
$matches = $matches[1][0]; 
} 

echo $matches; 

Ожидаемый результат

hair 

Фактический результат

null 

ответ

1

Ваш верхний регистр "Мои" не соответствие с вашим ниже case «my», потому что он не чувствителен к регистру. Код ниже соответствует независимо от случая.

$tempText = "My hair is black."; 

if ($matches == null) { 
preg_match_all('!my\s(.*?)\sis!is', $tempText, $matches); 
$matches = $matches[1][0]; 
} 

if ($matches == null) { 
preg_match_all('!my\s(.*?)\sare!is', $tempText, $matches); 
$matches = $matches[1][0]; 
} 

echo $matches; 
Смежные вопросы