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

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

<?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);


提问者:三只松鼠 2016-01-18 17:02

个回答

  • PHP河马
    2016-01-30 17:29:59
    已采纳

    错了:

    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);

    初学者,相互学习一下。

  • polarbear_cry
    2016-03-26 17:18:07

    $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);


  • 253376696
    2016-03-11 23:47:16

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

  • 慕神8718614
    2016-01-18 17:25:28

    这样写没错吧