日期:2014-05-17  浏览次数:20423 次

preg_replace 替换的问题
PHP code

    $string = <<<str
        ……………………
        <img src="/img/pvistely/1.jpg" />
        <img src="/img/pvistely/2.jpg" />
        <img src="/img/pvistely/3.jpg" />
        ……………………
str;
    $pattern = array('<img src="/img/pvistely/1.jpg" />','<img src="/img/pvistely/2.jpg" />','<img src="/img/pvistely/3.jpg" />');
    $replace = array('[img]1.jpg[/img]','[img]2.jpg[/img]','[img]3.jpg[/img]');
    echo preg_replace($pattern, $replace, $string);



得到这样的结果:

PHP code

    …………………… 
    <[img]1.jpg[/img]> 
    <[img]2.jpg[/img]> 
    <[img]3.jpg[/img]> 
    ……………………





为什么会多出两个尖括号 < > ?
要怎么才能把这个< > 也替换掉?

------解决方案--------------------
$pattern = array('<<img src="/img/pvistely/1.jpg" />>','<<img src="/img/pvistely/2.jpg" />>','<<img src="/img/pvistely/3.jpg" />>');
------解决方案--------------------
你用的是 preg_replace
$pattern 项中两端的<>被当做规则串的分界符了

用 str_replace 就可以了