私の最初の考えは、スペース上のテキストを爆発させて、あなたの言葉が結果の配列に存在するかどうかを確認することです。もちろん、いくつかの句読点があなたの配列に漏れているかもしれません。
単語のstrpos
を確認することもできます。見つかった場合は、次の文字が文字かどうかをテストします。それが手紙であれば、あなたは単語のサブテキストを見つけたことを知り、この発見を破棄します。もちろん
// Test online at http://writecodeonline.com/php/
$aWords = array("I", "cat", "sky", "dog");
$aFound = array();
$sSentence = "I have a cat. I don't have cats. I like the sky, but not skyrim.";
foreach ($aWords as $word) {
$pos = strpos($sSentence, $word);
// If found, the position will be greater than or equal to 0
if (!($pos >= 0)) continue;
$nextChar = substr($sSentence , ($pos + strlen($word)), 1);
// If found, ensure it is not a substring
if (ctype_alpha($nextChar)) continue;
$aFound[] = $word;
}
print_r($aFound); // Array ([0] => I [1] => cat [2] => sky)
より良い解決策は、これらのソリューションは、パターン・シークのようになりますようどこにも近いほど効率的であるように、あなたが、正規表現を使用することはできません理由を判断することです。
使用しているPHPのバージョンは? –