function str_emoji($str,$cdn){ function empic($h){ $p=dechex(str_replace(array('&#',';'),'',$h)); return ''; //$cdn無法傳進來!!! }; $str=preg_replace('#(\&\#[0-9]{6}\;)#ie','empic("\\1")',$str); return $str;};echo str_emoji($str,$_POST['face']);
$cdn無法傳進函數??
回複內容:
function str_emoji($str,$cdn){ function empic($h){ $p=dechex(str_replace(array('&#',';'),'',$h)); return ''; //$cdn無法傳進來!!! }; $str=preg_replace('#(\&\#[0-9]{6}\;)#ie','empic("\\1")',$str); return $str;};echo str_emoji($str,$_POST['face']);
$cdn無法傳進函數??
php中的閉包中變數的作用範圍和js中的稍微有點不同。要使閉包函數外的變數作用於閉包函數內,可用use
關鍵字。參考下面一個例子:
function test($a, $b) { $t = function ($c) use ($a, $b) { return $a + $b + $c; }; return $t(3);}echo test(1, 2); // 6
$cdn不在empix()的範圍下,它是str_emoji()的全域變數。要把$cdn 傳進empix()。
//自己測試下function str_emoji($str,$cdn){ function empic($h,$cdn){ $p=dechex(str_replace(array('&#',';'),'',$h)); return ''; //$cdn無法傳進來!!! }; $str=preg_replace('#(\&\#[0-9]{6}\;)#ie','empic("\\1",'.$cdn.')',$str); return $str;};