Comment ajuster preg_replace après que PHP7.0 l'ait abandonné
高洛峰
高洛峰 2017-05-16 13:09:06
0
3
570
$options = Typecho_Widget::widget('Widget_Options');
$sUrl = str_ireplace('/', '\/', rtrim($options->siteUrl, '/'));
$preg = '#(<a .*?href=")(?!' . $sUrl . ')([^"]+)"(.*?<\/a>)#ise';
$text = preg_replace($preg, "stripslashes('$1') . '$options->siteUrl' . 'go.html?url=' . base64_encode('$2') . '\" target=\"_blank\ "' . stripslashes('$3')", $text);

Après l'insertion du code dans PHP7.0, une erreur a été signalée. Selon les invites, j'ai appris que preg_replace avait été abandonné et devait être remplacé par preg_replace_callback. Comment faire ?

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

répondre à tous(3)
Peter_Zhu

Ce n'est pas que preg_replace soit abandonné, mais le modificateur /e est abandonné.

Je pense que cela devrait probablement être changé comme ça

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

Où puis-je voir que cette fonction a été abandonnée ?
http://php.net/manual/zh/func...
Support (PHP 4, PHP 5, PHP 7)
Publier un message d'erreur

黄舟

Les fonctions avec préfixe Preg ne sont pas obsolètes, mais les fonctions avec préfixe eregi sont obsolètes

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal