有人可以幫助修復下一個功能嗎?其目的是找到一個文本鏈接并使其可以按照一定的規則點擊。接下來的問題是:我不知道如何將變量插入 $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
。您可能希望將其定義為常量,以使其在整個代碼中可用,而無需擔心變量范圍。
- 1 回答
- 0 關注
- 164 瀏覽
添加回答
舉報
0/150
提交
取消