为了账号安全,请及时绑定邮箱和手机立即绑定

为什么这样写不行,错在哪里?

<?php
$str = '主要有以下几个文件:index.php, style.css, common.js';
//将目标字符串$str中的文件名替换后增加em标签
$pattern = '/(\w+\.\w+),(\w+\.\w+),(\w+\.\w+)/';
$replace = '<em>$1</em>,<em>$2</em>,<em>$3</em>';
echo preg_replace($pattern,$replace,$str);


正在回答

4 回答

错了:

  1. 你的“,”没有转义。

  2. “,”后面的空格也没有去检测。

我的demo:

$str = '主要有以下几个文件:index.php, style.css, common.js';

//将目标字符串$str中的文件名替换后增加em标签

$p = '/(\w+\.\w+)\,\s(\w+\.\w+)\,\s(\w+\.\w+)/';

$replace = '<em>$1</em> , <em>$2</em>, <em>$3</em>';

preg_match($p,$str,$matches);

echo preg_replace($p,$replace,$str);

初学者,相互学习一下。

0 回复 有任何疑惑可以回复我~
#1

三只松鼠 提问者

非常感谢!
2016-01-30 回复 有任何疑惑可以回复我~
#2

三只松鼠 提问者

发现逗号不用转义的,我记得要转义的是特殊字符也就是元字符,别的不需要转义
2016-01-30 回复 有任何疑惑可以回复我~

$pattern 中的两个,后边的空格你没有加上,加上就是对的,还有就是"."是不用转译的。更正后如下:

$str = '主要有以下几个文件:index.php, style.css, common.js';

//将目标字符串$str中的文件名替换后增加em标签

 $pattern = '/(\w+.\w+), (\w+.\w+), (\w+.\w+)/';

 $replace = '<em>$1</em>,<em>$2</em>,<em>$3</em>';

 echo preg_replace($pattern,$replace,$str);


0 回复 有任何疑惑可以回复我~

因为你没有加空格,在逗号后面有个空格,加上你的就正确了

0 回复 有任何疑惑可以回复我~

这样写没错吧

0 回复 有任何疑惑可以回复我~
#1

三只松鼠 提问者

不行,要不你试试,我实在不知道错在哪里了
2016-01-18 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
PHP进阶篇
  • 参与学习       181664    人
  • 解答问题       2575    个

轻松学习PHP中级课程,进行全面了解,用PHP快速开发网站程序

进入课程

为什么这样写不行,错在哪里?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信