PHP preg_replace 奇数字符无效
PHP preg_replace odd characters not working
我有以下代码,但由于某些原因,字符没有被替换....
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 这些字符有什么想法吗?
您忘记在正则表达式中添加前导和尾随正斜杠,这将为您提供所需的输出:
$softwareVersion = preg_replace('/[^a-zA-Z0-9\d\s\.]/', '', $s);
您也可以这样做,这将删除除字母数字和下划线之外的所有字符:
$softwareVersion = preg_replace('/\W/', '', $s);
一些需要调整的地方:
- 使用模式分隔符。
/
是最常见的。
- 通过仅在字符 class 中写入
a-z
并在模式末尾使用 i
modifier/flag 来减少模式长度。
- 字符 class.
中不需要转义点
- 使用
+
"one or more"量词提高效率。它将匹配连续出现的字符并一次性替换多字符子字符串。
代码:(Demo)
$s='AABBCC����ˮ��������Ƽ���� �˾XXYYZZ';
$softwareVersion = preg_replace('/[^a-z\d\s.]+/i','',$s);
echo $softwareVersion . "\n";
输出:
AABBCC XXYYZZ
我有以下代码,但由于某些原因,字符没有被替换....
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 这些字符有什么想法吗?
您忘记在正则表达式中添加前导和尾随正斜杠,这将为您提供所需的输出:
$softwareVersion = preg_replace('/[^a-zA-Z0-9\d\s\.]/', '', $s);
您也可以这样做,这将删除除字母数字和下划线之外的所有字符:
$softwareVersion = preg_replace('/\W/', '', $s);
一些需要调整的地方:
- 使用模式分隔符。
/
是最常见的。 - 通过仅在字符 class 中写入
a-z
并在模式末尾使用i
modifier/flag 来减少模式长度。 - 字符 class. 中不需要转义点
- 使用
+
"one or more"量词提高效率。它将匹配连续出现的字符并一次性替换多字符子字符串。
代码:(Demo)
$s='AABBCC����ˮ��������Ƽ���� �˾XXYYZZ';
$softwareVersion = preg_replace('/[^a-z\d\s.]+/i','',$s);
echo $softwareVersion . "\n";
输出:
AABBCC XXYYZZ