<?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);
错了:
你的“,”没有转义。
“,”后面的空格也没有去检测。
我的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);
初学者,相互学习一下。
$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);
因为你没有加空格,在逗号后面有个空格,加上你的就正确了
这样写没错吧