php preg_replace

时间:2011-02-20 16:44:08

标签: php

我只需要允许字母,数字和下划线(_)。

其他任何东西都替换为空格符号(_)。

我的正则表达式模式有什么问题?

<?php
$val = 'dasd Wsd 23 /*~`';
$k = preg_replace('/[a-Z0-9_]+$/', '_', $val);
?>

2 个答案:

答案 0 :(得分:3)

您需要添加^,它会反转字符类中匹配的字符。

$val = 'dasd Wsd 23 /*~`';
$k = preg_replace('/[^a-zA-Z0-9_]/', '_', $val);

另一种方法是让它与非“单词”字符匹配,这不是字母,数字或下划线。

$val = 'dasd Wsd 23 /*~`';
$k = preg_replace('/\W/', '_', $val);

答案 1 :(得分:0)

[a-Z]不匹配任何内容..您可以使用\W来匹配非单词字符:

preg_replace('/\W+/', '_', $val)

此外,$符号仅匹配字符串末尾。