在函数内部的 preg_replace 中调用函数

发布于 2024-08-18 07:58:53 字数 1014 浏览 4 评论 0原文

我有一些具有与此类似的结构的代码

           function bbcode($Text)
           { //$Text = preg_replace("/\[video\](.+?)\[\/video\]/",embed_video($1), $Text);
    return $Text;}

    function embed_video($url){
if (preg_match("/http:\/\/www.youtube.com\/watch\?v=([0-9a-zA-Z-_]*)(.*)/i", $url, $matches)) {
    return '<object width="425" height="350">'.
           '<param name="movie" value="http://www.youtube.com/v/'.$matches[1].'" />'.
           '<param name="wmode" value="transparent" />'.
           '<embed src="http://www.youtube.com/v/'.$matches[1].'&autoplay="0" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350" />'.
           '</object>';
}
    return $url;
    }

$lolcakes = "[video]http://youtube.com/id/xxxxxxpron[/video]";
$lolcakesconverted = bbcode($lolcakes);

问题是它向我吐出一个错误。

解析错误:语法错误,意外的 T_LNUMBER,期望 T_VARIABLE 或 '$'

对于如何在 bbcode 函数的 preg_replace 内部调用 embed_video 有什么想法吗?

谢谢!

I have some code with the a structure similar to this

           function bbcode($Text)
           { //$Text = preg_replace("/\[video\](.+?)\[\/video\]/",embed_video($1), $Text);
    return $Text;}

    function embed_video($url){
if (preg_match("/http:\/\/www.youtube.com\/watch\?v=([0-9a-zA-Z-_]*)(.*)/i", $url, $matches)) {
    return '<object width="425" height="350">'.
           '<param name="movie" value="http://www.youtube.com/v/'.$matches[1].'" />'.
           '<param name="wmode" value="transparent" />'.
           '<embed src="http://www.youtube.com/v/'.$matches[1].'&autoplay="0" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350" />'.
           '</object>';
}
    return $url;
    }

$lolcakes = "[video]http://youtube.com/id/xxxxxxpron[/video]";
$lolcakesconverted = bbcode($lolcakes);

The problem is it spits an error back at me.

Parse error: syntax error, unexpected T_LNUMBER, expecting T_VARIABLE or '$'

Have any ideas on how i can call embed_video inside of the preg_replace of the bbcode function?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

罪歌 2024-08-25 07:58:53

尝试 preg_replace_callback

return preg_replace_callback("/\[video\](.+?)\[\/video\]/", 'embed_video', $Text);

function embed_video($matches)
{
  return $matches[1] . 'foo';      
}

try preg_replace_callback

return preg_replace_callback("/\[video\](.+?)\[\/video\]/", 'embed_video', $Text);

function embed_video($matches)
{
  return $matches[1] . 'foo';      
}
一杯敬自由 2024-08-25 07:58:53

您可以在 preg_replace() 上使用“e”修饰符(请参阅模式修饰符

return preg_replace("/\[video\](.+?)\[\/video\]/e", "embed_video('$1')", $Text);

告诉 preg_replace() 将第二个参数视为 PHP 代码。

You can use the "e" modifier on preg_replace() (see Pattern Modifiers)

return preg_replace("/\[video\](.+?)\[\/video\]/e", "embed_video('$1')", $Text);

which tells preg_replace() to treat the second parameter as PHP code.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文