用preg_match_all匹配2个单词之间的单词

时间:2015-09-08 19:17:35

标签: php arrays string preg-match-all

我正在尝试使用preg_match_all找到单词“my”和“is”或“my”和“are”之间的字符串部分,但由于某种原因,它根本找不到任何匹配项。我不确定我做错了什么。请看一下我的代码:

$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

2 个答案:

答案 0 :(得分:1)

你的大写"我的"与你的小写字母不匹配" 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;

答案 1 :(得分:0)

您可以使用此模式:/my(.*)is/i