从PHP中删除字符串中的短字和字符

时间:2011-10-08 05:33:35

标签: php

我有一个字符串可能是这样的:

$searchterm = "The quick brown fox, jumps over the lazy dog! 48372. John's?"

有没有办法删除所有3个字符及以下的单词以及不是字母数字的字符(撇号除外)?

我希望我的结果是:

quick brown jumps over lazy 48372 John's 

3 个答案:

答案 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);