【发布时间】:2014-08-11 06:05:27
【问题描述】:
我需要替换字符串中没有用单个字节表示的字符。
我的字符串是这样的
$inputText="centralkøkkenet kliniske diætister";
在那个字符串中有像 ø 和 æ 这样的字符。这些字符应该被替换。如何在可用于替换的正则表达式中提及这些?
【问题讨论】:
我需要替换字符串中没有用单个字节表示的字符。
我的字符串是这样的
$inputText="centralkøkkenet kliniske diætister";
在那个字符串中有像 ø 和 æ 这样的字符。这些字符应该被替换。如何在可用于替换的正则表达式中提及这些?
【问题讨论】:
如果您想替换除字母数字和空格字符以外的所有内容,请尝试。
[^a-zA-Z0-9 ]
这里是demo
示例代码:
$re = "/[^a-zA-Z0-9 ]/";
$str = "centralkøkkenet kliniske diætister";
$subst = '';
$result = preg_replace($re, $subst, $str);
最好使用[^\w\s] 或[\W\S] 使其简短而简单,正如@hjpotter92 以及在cmets 中所建议的那样。
模式说明:
[^\w\s] any character except: word characters:
(a-z, A-Z, 0-9, _), whitespace (\n, \r, \t,\f, and " ")
[\W\S] any character of:
non-word characters (all but a-z, A-Z, 0-9, _),
non-whitespace (all but \n, \r, \t, \f, and " ")
【讨论】:
\w 也包括下划线。也是正确的
$resultText = preg_replace('[^a-zA-Z0-9 ]', '', $inputText);。对吗?
0-9 后面有空格或使用/[^a-zA-Z0-9\s]
\s。
如果您还想保留标点符号,即:-'"!...,请使用这个:
$text = 'central-køkkenet "kliniske" diætister!';
$new = preg_replace('/[\x7F-\xFF]/ui', '', $text);
echo $new,"\n";
输出:
central-kkkenet "kliniske" ditister!
【讨论】: