2011-10-08 56 views
2

刪除短字和字符我有可能是這樣的字符串:從字符串在PHP

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

有沒有一種方法來去除3個字符和下以及該AREN字符的所有單詞字母數字(除了撇號)?

我想我的結果是:

quick brown jumps over lazy 48372 John's 
+1

當然有。你到底想到了解決這個問題的方法? –

回答

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()在兩種輸出格式之間進行轉換。

+0

在這裏,我正在搞爆炸和字符串計數..謝謝! :) – penpen

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); 
+1

你的代碼會由於'/ ig'而導致錯誤。第一行刪除所有空格和大寫字母。試試'[^ A-Za-z0-9']'另外,你必須有'A-Za-z'或'Az',否則它將忽略所有的大寫字母...... – Yoshiyahu

+1

'我'不會,我扔了在那裏,因爲我習慣搜索替換的vim語法:),'我'使它不區分大小寫,但我確實錯過了空間,謝謝:) – Geoffrey

+0

啊,我忘了'i'在PHP中工作。是的,在JavaScript和PHP之間切換會一直這樣對我。 – Yoshiyahu

-2

preg_replace(mixed $ pattern,mixed $ replacement,mixed $ subject);

+0

這並不告訴OP如何做他想做的。 – Geoffrey

+0

她!順便說一句,謝謝你的回答,可能已經過去了,但是/ ig絆倒了我 – penpen