我需要删除除½
以外的所有特殊字符preg_replace('/[^A-Za-z0-9\-]/', '', $string);
这是我到目前为止所拥有的。我将½转换为其他东西吗?
谢谢
答案 0 :(得分:1)
只需将½
添加到正则表达式,然后就可以了:
preg_replace('/[^A-Za-z0-9½\-]/', '', $string);
答案 1 :(得分:1)
尝试格式为\x{00BD}
的Unicode十六进制x00BD:
preg_replace('/[^A-Za-z0-9\x{00BD}-]/', '', $string);
此外,如果它位于字符类的开头或结尾,则无需转义-
。
答案 2 :(得分:1)
您可以将½
添加到角色组,但是您必须使用修饰符u
切换到unicode(utf-8)模式。
$string = "Example: ½¼";
var_dump(
preg_replace('/[^A-Za-z0-9½-]/u', '', $string)
);
输出:
string(9) "Example½"
您也可以使用提供字符作为unicode代码点。
var_dump(
preg_replace('/[^A-Za-z0-9\x{00BD}-]/u', '', $string)
);
如果没有unicode模式,它将分别匹配字符的两个字节。这可能导致部分删除字符。