2
這裏是我的總結awesome字符串函數:如何使用preg_match_all在乾草堆中找到複數針?
function summarize($haystack, $needle, $wordLimit=1) {
$preg_safe = str_replace(" ", "\s", preg_quote($needle));
$pattern = "/(\w*\S\s+){0,$wordLimit}\S*\b($preg_safe)\b\S*(\s\S+){0,$wordLimit}/ix";
if (preg_match_all($pattern, $haystack, $matches)) {
return $matches[0][0];
}
return false;
}
該功能會在大串針,並用針周圍背景的ň話一起返回。有點像谷歌搜索結果顯示搜索字符串在標題下的結果的上下文中。
下面是我如何使用它:
$haystack = 'Lorem ipsums dolor sit amet.'; // note the plural "ipsum"
echo summarize($haystack,'ipsums');
返回:Lorem ipsums dolor
(默認爲1個字針周圍)
echo summarize($haystack,'ipsum'); // i.e. not exact word match of "ipsums"
返回:false
我怎樣才能調整正則表達式返回相同的結果確切的單詞匹配?
什麼是「牛」的複數?是「牛」嗎?線索:不是。你打算如何處理? – 2012-03-23 19:21:42
您可以通過複合功能始終運行輸入針。 Nethack有一個......有趣的一個:http://celabs.com/nethack/html/objnam_8c.html#ac1ac6c9f4a8707e6d675c75cf9bd4908 =) – Crontab 2012-03-23 19:25:55
難道你不想只拿出'\ b',所以你不要'在搜索字符串旁邊需要單詞邊界嗎? – 2012-03-23 19:27:35