我有以下代码,但由于某种原因,字符不会被替换....
test.php的
<?php
$s = 'AABBCC����ˮ��������Ƽ���� �˾XXYYZZ';
$softwareVersion = preg_replace('[^a-zA-Z\d\s\.]', '', $s);
echo $softwareVersion . "\n";
我得到了什么
jeffreylroberts:~$ php test.php
AABBCC����ˮ��������Ƽ���� �˾XXYYZZ
jeffreylroberts:~$
我期待的是什么
jeffreylroberts:~$ php test.php
AABBCC XXYYZZ
jeffreylroberts:~$
有关如何preg_replace这些字符的任何想法?
答案 0 :(得分:1)
你忘了在正则表达式中添加一个前导正斜杠,这将为你提供所需的输出:
$softwareVersion = preg_replace('/[^a-zA-Z0-9\d\s\.]/', '', $s);
你也可以这样做,这将删除除字母数字和下划线之外的所有字符:
$softwareVersion = preg_replace('/\W/', '', $s);
答案 1 :(得分:0)
要调整的一些事项:
/
是最常见的一个。a-z
并使用模式末尾的i
修饰符/标记来缩短模式长度。+
&#34;一个或多个&#34;量词来提高效率。它将匹配连续出现的字符并一次性替换多字符子字符串。代码:(Demo)
$s='AABBCC����ˮ��������Ƽ���� �˾XXYYZZ';
$softwareVersion = preg_replace('/[^a-z\d\s.]+/i','',$s);
echo $softwareVersion . "\n";
输出:
AABBCC XXYYZZ