为什么我这样写<em>没有效果呢

来源:3-7 正则表达式的搜索和替换

慕码人1187127

2018-12-27 20:08

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

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

$patterns=array('/(\m+:)/','/\s*{(\w+\.\w+),}/','/\s*{(\w+\.\w+),}/','/\s*{(\w+\.\w+),}/');

$replace=array('\1','<em>$2</em>','<em>$3</em>','<em>$4</em>');

$str=preg_replace($patterns,$replace,$str);

echo $str;


https://img2.mukewang.com/5c24c0440001296803960133.jpg



写回答 关注

1回答

  • 柳源居士
    2018-12-28 22:43:01
    已采纳
    1. 汉子匹配不能用\w,并且你写的是\m,还用注意冒号是中文的冒号“:”,逗号也是中文的逗号。

    2. 此处不适合用数组匹配,因为还用处理中文。

    3. 即使按照数组来做匹配,下标是针对每个数组元素分别计算的,你从1-4显然是错误的。

    4. 改成 这样就OK了。

    5. $patterns='/(\w+\.\w+)/';
      $replace='<em>$1</em>';
      $str=preg_replace($patterns,$replace,$str);
      echo $str;

    慕码人118...

    懂了,谢谢你的回答

    2018-12-30 10:56:15

    共 1 条回复 >

PHP进阶篇

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

181724 学习 · 2575 问题

查看课程

相似问题