问答详情
源自:3-7 正则表达式的搜索和替换

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

$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



提问者:慕码人1187127 2018-12-27 20:08

个回答

  • 柳源居士
    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;