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

标签 php function preg-replace syntax-error

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

           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 有什么想法吗?

谢谢!

最佳答案

尝试 preg_replace_callback

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

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

关于php - 在函数内部的 preg_replace 中调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2082207/

相关文章:

php - 发送 session 数据 : Php on one server and jsp on another

c - 函数溢出错误

C++ 打印行号以及二维数组的最大行数

php - 使用 php 从字符串中删除 ¶

PHP:发送WORD文档文件下载

javascript - 从 iframe 到 ajax 的 session

javascript - React 将组件作为参数传递给函数

php - 如何在大量数据中preg_replace_all

php - 如何用 PHP 替换字符串中的变量?

php - 退出 HTML 页面时停止在 PHP 文件中调用的 Python 脚本