提取开始从字符串中特定字母在PHP
只是为了演示绝对相匹配的非正则表达式的解决方案:
$needle = 'coc';
$sentence = 'I loves me some cochin, really.';
$matches = array_filter(str_word_count($sentence,1),
function($item) use ($needle) {
return (substr($item,0,strlen($needle) == $needle));
}
);
编辑
说明:
的str_word_count()函数的第二个参数1或2返回$ string中所有单词的数组。这比在空间上爆炸要好,因为它也会考虑其他标点符号(例如“科钦”之后的逗号)。
词语进行阵列然后用过滤的回调(定义为一个lambda或匿名功能)进料至array_filter()功能,一起。 lambda为数组参数中的每个条目($ item)返回true或false:如果该条目的真实值包含在$ matches中;如果是假的,那么它不是。
定义的拉姆达函数传递每个$项目依次(阵列条目),并且还$针(由“使用”条款的方式)。它只是比较$ item值的第一个字符和针,并根据匹配返回true或false。请注意,这是一个区分大小写的比较。如果你想不区分大小写,你可以在比较之前使用strtoupper()或strtolower()来对付substr()值和$ needle值。
如果你想要一个“类似”的比赛,那么你可以取代在$项目和$针的levenshtein()或similar_text()值的比较lambda函数的比较,以%年龄相似(或可能的metaphone()功能)来确定它们是否应该被认为是相似的。
$needle = 'coc';
$sentence = 'I loves me some cochin, really; and "couchey" is pretty cool too';
$matches = array_filter(str_word_count($sentence,1),
function($item) use ($needle) {
return (levenshtein($item,$needle,1,1,0) == 0);
}
);
我需要对此进行解释。我认为这可能有帮助,我接受但需要说明 – 2012-03-12 07:59:22
你正在寻找的正则表达式是\b(NEEDLE\w+)
。像这样:
$needle = 'coc';
$sentence = 'I loves me some cochin, really.';
if (preg_match('/\b(' . preg_quote($needle, '/') . '\w+)/', $sentence, $match)) {
echo $match[1];
}
这不是有益的,我需要有点类似的话没有太多的不同的词感谢您的答复 – 2012-03-12 07:48:31
遗憾的是,基于对你的问题的一句话描述你的含糊一个跑,我不能完全满足您的需求 – deceze 2012-03-12 08:15:36
感谢您事先我试图发展句子形成 – 2012-03-12 09:47:32
我们需要你发布你的尝试到目前为止。由于 – 2012-03-12 07:27:22
如果我搜索一个词与COC它会显示库谢开始,科钦我不想,我需要确切的词与科钦 – 2012-03-12 07:30:02
开始你需要找回在句子中的位置?或者提取以$针开头的实际单词?而你的意思是“相似”? – 2012-03-12 07:30:53