$text = preg_replace('/[^\\/-a-z\s]/i', '', $text);
我有這個表達式,它可以刪除除破折號,正斜槓和空白之外的所有內容。但是,無論我走到哪裏,它總是會留下數字。 任何想法?如何從PHP中的字符串中刪除數字?
$文字= 「龍飛鳳舞#_45/ADJ」=結果= FLAMBOYANT45/ADJ
$text = preg_replace('/[^\\/-a-z\s]/i', '', $text);
我有這個表達式,它可以刪除除破折號,正斜槓和空白之外的所有內容。但是,無論我走到哪裏,它總是會留下數字。 任何想法?如何從PHP中的字符串中刪除數字?
$文字= 「龍飛鳳舞#_45/ADJ」=結果= FLAMBOYANT45/ADJ
逃生,你想在你的正則表達式匹配-
。正則表達式中字符類部分的第一個連字符-
具有特殊含義。它會產生範圍從/
到a
(我認爲)。爲了ammend,嘗試:
$text = preg_replace('/[^\\/\-a-z\s]/i', '', $text);
@mu:公平的採摘。回答編輯。 – jsw 2011-04-26 00:34:58
這工作
$text = preg_replace('#[^\\/\-a-z\s]#i', '', $text);
我的PHP福不是很強的,但我懷疑/-a-z
被解釋爲字符範圍從/
到z
(及注意事項該數字緊跟着斜槓在ASCII)所以也許你想這個:
$text = preg_replace('/[^\\/\-a-z\s]/i', '', $text);
我剛剛添加了一個反斜槓來逃避(有時)正則表達式字符類中「 - 」的特殊含義。
驚人的效果。我不知道破折號是一個元字符。我有這個元字符正則表達式的列表。 。^ * +?{{} \ |()}也不在這個列表中是正斜槓。 – user723220 2011-04-26 00:31:00
@ user723220:連字符是一個特殊的內部字符類,例如'[a-z]',它用於表示字符範圍。但是,如果連字符位於字符類的開始或結尾,「[-a]」或「[z-]」,那麼它只是一個文字連字符。斜槓不是特殊的*內部*正則表達式,但它經常被用於*分隔正則表達式(例如'/ pancake /'),一些正則表達式引擎允許你使用不同的分隔符(比如這個Perl:'$ x =〜m!^ http://!'),以避免像'/ \\\ //'那樣難以理解的「牙籤」。 – 2011-04-26 01:25:30
<?php
$text = "FLAM-BOYANT#_45/ADJ";
$allowed = "/[^a-z\\040\\.\\-\/]/i";
$text= preg_replace($allowed,"",$text);
echo $text; //FLAM-BOYANT/ADJ
?>
它會更容易定義要剩下什麼。 – 2011-04-26 00:13:55
我需要的東西除了字母,正斜槓,破折號和空格外都沒有。這個表達式應該這樣做 - 除了數字還在那裏。 – user723220 2011-04-26 00:17:13