2010-02-05 95 views
1

我有这样的代码:PHP的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; 

为什么不工作?

+1

穆斯塔法,这不是一个问题了,而是下一次考虑发布什么*“不工作” *实际意义。为了清楚起见,您可以发布您期望的实际输出和输出。 – 2010-02-05 11:50:33

回答

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

噢,上帝它的工作非常感谢,但你做了什么 – 2010-02-05 11:44:59