php preg_replace问题

时间:2010-02-05 11:39:15

标签: php regex preg-replace

我有这段代码:

$text = '[iframe=200x200]http://stackoverflow.com[iframe] ';
$text = preg_replace(
    '/\[iframe=(.*?)x(.*?)\](.*?)\[\/iframe\]/ms', 
    '<iframe style="border: 1px solid rgb(204, 204, 204); width: \1px; height: \2px;" src="\3"></iframe>', 
    $text
);
echo $text;

为什么不起作用?

2 个答案:

答案 0 :(得分:2)

尝试:

$text = preg_replace('/\[iframe=(.*?)x(.*?)\](.*?)\[iframe\]/ms',
        '<iframe style="border: 1px solid rgb(204, 204, 204); width: \1px; height: \2px;" src="\3"></iframe>',
        $text);

\[\/iframe\]中有一些不需要的斜杠需要更改为\[iframe\]

修改

实际上您的输入字符串看起来不正确,因为它没有关闭iframe标记:

$text = '[iframe=200x200]http://stackoverflow.com[iframe] ';

应该是

$text = '[iframe=200x200]http://stackoverflow.com[/iframe] ';

如果您的字符串包含/,您可以使用其他分隔符来避免在字符串中找到/。类似的东西:

$text = preg_replace('#\[iframe=(.*?)x(.*?)\](.*?)\[/iframe\]#ms',
            '<iframe style="border: 1px solid rgb(204, 204, 204); width: \1px; height: \2px;" src="\3"></iframe>',
            $text);

答案 1 :(得分:2)

您的输入字符串有错误。结束标记处的/缺失

[IFRAME = 200×200] http://stackoverflow.com[/iframe]