2014-10-13 3 views
0

Привет Я работаю над темой wordpress и пишу пользовательский виджет, который работает правильно. Но когда я делаю wp_debug = правда это дает этой ошибкеУстаревший: preg_replace(): Модификатор/e является устаревшей ошибкой

Устарел: preg_replace(): Модификатор/е рекомендуется использовать preg_replace_callback вместо этого в ....

Вот код моего preg_replace

$status = preg_replace("/((http:\/\/|https:\/\/)[^)]+)/e", "'<a href=\"$1\" title=\"$1\" $target >'. ((strlen('$1')>=$linkMaxLen ? substr('$1',0,$linkMaxLen).'...':'$1')).'</a>'", $status); 

Я пытаюсь изменить его, как этот

$status = preg_replace_callback(
       "/((http:\/\/|https:\/\/)[^)]+)/e", 
       function($matches) { 
        return "'<a href=\"$1\" title=\"$1\" $target >'. ((strlen('$1')>=$linkMaxLen ? substr('$1',0,$linkMaxLen).'...':'$1')).'</a>'"; 
       }, 
       $status 
      ); 

Но это не работает. Как я могу это исправить?

+0

использование preg_replace_callback вместо этого, обратитесь к документации. –

+0

Я пробовал, но он не работает. – trikutin

ответ

0

В обратном вызове, заменить $1 на $matches[1]:

function($matches) { 
    return "'<a href=\"$matches[1]\" title=\"$matches[1]\" $target >' 
     . (
      (strlen($matches[1]) >= $linkMaxLen ? 
        ? substr(matches[1], 0, $linkMaxLen).'...' 
        : matches[1] 
      ) 
     ) 
     .'</a>'" 
}, 
Смежные вопросы