在各种资料中,大家都认为/s等价于 [ /f/n/r/t/v]。如下为菜鸟教程截图:

今天却碰到一个奇怪的问题:

PHP代码,utf-8格式,代码如下:

$pattern_1 = ‘//s+?(/S+)?$/’;
$pattern_2 = ‘/[ /f/n/r/t/v]+?(/S+)?$/’;

$str_1 = ‘加强和改进党的作风’;
$str_2 = ‘加强和改进你的作风’;

echo “1:”;
echo preg_replace($pattern_1, ”, $str_1);

echo “<br>2:”;
echo preg_replace($pattern_1, ”, $str_2);

echo “<br>3:”;
echo preg_replace($pattern_2, ”, $str_1);

echo “<br>4:”;
echo preg_replace($pattern_2, ”, $str_2);

 

 

 

 

现在就有问题了,为何/s等于 [ /f/n/r/t/v]的话,在对字符串1的替换中,结果却不同?

str_1和str_2没有什么那一个字有什么差别呢,为何正则2对它们的处理结果不同?

 

 

https://q.cnblogs.com/q/127793/

最后修改日期: 2020-10-21

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。