亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 preg_replace_callback() 中將變量插入到

如何在 preg_replace_callback() 中將變量插入到

PHP
LEATH 2023-07-08 22:05:53
有人可以幫助修復下一個功能嗎?其目的是找到一個文本鏈接并使其可以按照一定的規則點擊。接下來的問題是:我不知道如何將變量插入 $function( variable ) 中。該變量是在preg_replace_callback中生成的Fatal error: Uncaught Error: Function name must be a string in....function make_clickable($text){    switch( 'strrev' )    {        case 'strrev':            $function = 'strrev';        break;                case 'base64':            $function = 'base64_encode';        break;                default:            $function = '';        break;    }    $text = preg_replace_callback("#(^|[\n ])([\w]+?://[\w\#$%&~/.\-;:=,?@\[\]+]*)#si",         function ($m){            global $function;        return "'$m[1]<a href=\"out.' . $phpEx . '?url=" . urlencode( $function( $m[2]) ). "\" target=\"_blank\">$m[2]</a>'";    }, $text);    return($text);}echo make_clickable('text http://example.net text');// <a href="./out.php?url=net.example%2F%2F%3Aptth" target="_blank">http://example.net</a>
查看完整描述

1 回答

?
慕俠2389804

TA貢獻1719條經驗 獲得超6個贊

您不需要在preg_replace_callback.?您可以簡單地使用該use語句,該語句可用于使直接作用域中的變量可用于閉包/匿名函數,如下:

$text?=?preg_replace_callback("#(^|[\n?])([\w]+?://[\w\#$%&~/.\-;:=,?@\[\]+]*)#si",?
????function?($m)?use?($function)?{
????????return?"'$m[1]<a?href=\"out.'?.?$phpEx?.?'?url="?.?urlencode(?$function(?$m[2])?).?"\"?target=\"_blank\">$m[2]</a>'";
},?$text);

如果您var_dump($function);在當前代碼中執行此操作,您會發現 的值為$function,NULL因此會出現錯誤。每當您switch上線時,請記住這種default情況會導致錯誤。如果您想繞過$function,則需要有一個條件來檢查if (!empty($function)) ...,并相應地返回轉換后的/純文本 URL。

在上面的代碼中,該變量$phpEx也是未定義的。(我認為這是一個正在進行中的函數。)您可以將它use與您可能想要使用的其他變量一起包含在語句中:use ($function, $phpEx)--但顯然,您必須在代碼中的某個位置定義它。大概會是這樣.php。您可能希望將其定義為常量,以使其在整個代碼中可用,而無需擔心變量范圍。


查看完整回答
反對 回復 2023-07-08
  • 1 回答
  • 0 關注
  • 164 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號