我有一个字符串可能是这样的:
$searchterm = "The quick brown fox, jumps over the lazy dog! 48372. John's?"
有没有办法删除所有3个字符及以下的单词以及不是字母数字的字符(撇号除外)?
我希望我的结果是:
quick brown jumps over lazy 48372 John's
答案 0 :(得分:4)
$result = trim( preg_replace(
"/[^a-z0-9']+([a-z0-9']{1,3}[^a-z0-9']+)*/i",
" ",
" $searchterm "
) );
顺便说一句,如果你想要一个数组中的单词,那就有一个更简单的解决方案:
preg_match_all( "/[a-z0-9']{4,}/i", $searchterm, $words );
$words = $words[0];
当然,您可以使用implode()
和explode()
在两种输出格式之间进行转换。
答案 1 :(得分:3)
你可以这样做..
/* remove the non alphanumeric except for quotes */
$searchterm = preg_replace('/[^a-z0-9\' ]/i', '', $searchterm);
/* remove <= three letter words */
$searchterm = preg_replace('/(^| )[a-z0-9\']{,3}( |$)/i', ' ', $searchterm);
答案 2 :(得分:-2)
preg_replace(混合$ pattern,混合$ replacement,混合$ subject);