繁体   English   中英

如何使用正则表达式“清理”PHP中的字符串?

[英]How do I “clean” a String in PHP using regex?

例如,假设我有

$blah = "C$#@#.a534&";

我希望过滤字符串,以便只有字母,数字和“。” 继续产生“C.a534”

我该怎么做呢?

如果您知道应该允许哪些字符,则可以使用否定字符组(在正则表达式中)删除其他所有字符:

$blah = preg_replace('/[^a-z0-9\.]/i', '', $blah);

请注意,我正在使用正则表达式的i修饰符。 它匹配不区分大小写,因此我们不需要指定az AZ

已被回答很多次但是:

function cleanit($input){
    return preg_replace('/[^a-zA-Z0-9.]/s', '', $input);
}


$blah = cleanit("C$#@#.a534&");

你可以使用preg_replace

$text = preg_replace('/[' . preg_quote('CHARSYOUDONTWANT','/') .  ']/','',$text);

在其他情况下,只有你想要的字符试试这个,

$text = preg_replace('/[^' . preg_quote('CHARSONLYYOUWANT','/') .  ']/','',$text);

例如

$blah = "C$#@#.a534&";
$blah = preg_replace('/[' . preg_quote('$#@&','/') . ']/','',$blah);
echo $blah;

或者反过来做:

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

http://php.net/manual/en/function.preg-replace.php

用空字符串替换所有无效字符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM