2012-07-26 133 views
0

我使用preg_replace函數。我希望函數不要刪除撇號(')字符。所以我希望它能把這個詞作爲(點)。 我該怎麼做?使用preg_replace函數刪除字符

$last_word = "o'clock."; 

$new_word= preg_replace('/[^a-zA-Z0-9 ]/','',$last_word); 

echo $new_word; 
+0

然後包括在您忽略的人物名單逃脫撇號。 – dnagirl 2012-07-26 12:07:25

+0

那麼最終的結果應該是什麼?你在尋找什麼規則(英文)?是,「刪除任何不是字母,數字,空格或撇號的字符」? – 2012-07-26 12:08:11

回答

0

嘗試:

$last_word = "o'clock."; 
$new_word= preg_replace('/[^a-zA-Z0-9\' ]/','',$last_word); 
echo $new_word; 

演示在這裏:http://ideone.com/JMH8F

-1

您使用的正則表達式不會刪除「'」(撇號)。相反,它與主題字符串根本不匹配,因爲「。」 (點)。在這種情況下,preg_replace()返回NULL。

+0

它返回'oclock'。 http://ideone.com/FoRE7 – 2012-07-26 12:05:12

+0

對不起,你是對的。我會給另一個答案:-( – arkascha 2012-07-26 12:07:19

+0

是否有去(返回)? – user1425871 2012-07-26 12:08:15

0

該正則表達式明確刪除所有字符除了的字母和數字。請注意領先的「^」。所以它會做你所要求的。

所以很有可能你要添加的「'」(撇號),以正則表達式中設置排除:

'/[^a-zA-Z0-9\' ]/' 
0

更改原始'/[^a-zA-Z0-9 ]/'"/[^a-zA-Z0-9 ']/"。這僅僅包括了否定字符類中的撇號。

查看online example

另外:我的建議是對字符串使用雙引號(與"o'clock."一樣),因爲混合PHP字符串和正則表達式模式的反斜槓轉義可能會很快引起混淆。

相關問題