搜尋

首頁  >  問答  >  主體

PHP7.0廢棄preg_replace後怎麼調整

$options = Typecho_Widget::widget('Widget_Options');
$sUrl = str_ireplace('/', '\/', rtrim($options->siteUrl, '/'));
$preg = '#(<a .*?href=")(?!' . $sUrl . ')([^"]+)"(.*?<\/a>)#ise';
$text = preg_replace($preg, "stripslashes('') . '$options->siteUrl' . 'go.html?url=' . base64_encode('') . '\" target=\"_blank\"' . stripslashes('')", $text);

代碼放到PHP7.0後報錯了,根據提示得知是preg_replace被廢棄了,得用preg_replace_callback代替。請問怎麼做?

高洛峰高洛峰2833 天前596

全部回覆(3)我來回復

  • 天蓬老师

    天蓬老师2017-05-16 13:11:06

    不是preg_replace被廢棄,是/e這個修飾符被廢棄。

    我想大概應該這樣改

    preg_replace_callback($preg,
        function ($matches) {
            return stripslashes($matches[1]).$options->siteUrl.'go.html?url='.base64_encode($matches[2]).'\" target=\"_blank\"'.stripslashes($matches[3]);
        });

    回覆
    0
  • 迷茫

    迷茫2017-05-16 13:11:06

    哪裡看出放棄了這個函數了 ?
    http://php.net/manual/zh/func...
    支援 (PHP 4, PHP 5, PHP 7)
    貼報錯誤提示吧

    回覆
    0
  • 黄舟

    黄舟2017-05-16 13:11:06

    preg前綴的都沒廢棄,廢棄的是eregi前綴的函數

    回覆
    0
  • 取消回覆