我有这个PHP代码
$filename = "verbs.php"; // http://alylores.x10.mx/vega/verbs2.php
$handle = fopen($filename, "r");
$verbs = fread($handle, filesize($filename));
fclose($handle);
我用PHP explode()
函数
将单词拆分为数组
$verbslist = explode(",", $verbs);
我也有一个字符串,如:
$sentence = "Where is Phisz' dog?";
然后我使用str_replace()
函数从句子中删除动词和一些特定的单词,这样唯一的左边就是主语。
$newsentence = str_replace($verbslist,"",$sentence);
但结果是:
新句子:Phz' dog?
// is
Phisz
也被删除了。
我发现问题在于Phisz
字词包含is
,str_replace()
也删除了Phisz' dog?
。
我想要的是如何从句子中删除单词/ vebs而不影响其他单词。我的意思是删除 EXACT VERB / WORD .....并且不区分大小写......
预期结果将是这样的
新句子:{{1}}
答案 0 :(得分:6)
使用像/\bword\b/
之类的正则表达式将仅替换整个单词。 \b
表示单词边界。所以你可以这样做:
foreach ($verblist as &$verb) {
$verb = '/\b' . preg_quote($verb, '/') . '\b/';
}
$newsentence = preg_replace($verblist, '', $sentence);
答案 1 :(得分:0)
由于你想要删除精确的动词,你可以在每个动词周围加上空格,这样你的列表就像这样,用_表示空格
" is "
" where "
等
然后让不区分大小写使所有动词小写,然后将你的动词包装在strtolower()
strtolower($sentence)
所以你的替换看起来像这样:
$newsentence = str_replace($verbslist,"",strtolower($sentence));