В связи с
весенним обострением разработчиков PHPвыходом новой версии PHP7, необходимо заменить все preg_replace с модификатором \e на preg_replace_callback. Убил бы, честное слово. Казалось бы, все просто, берешь оригинал
Код:
$string=preg_replace("/:([a-z]{1,10}):/e", "print_smile('\\1')", $string)
и делаешь из него
Код:
$string=preg_replace("/:([a-z]{1,10}):/", function($matches){return print_smile();}, $string)
не слушайте там всяких в интернете, которые предлагают использовать create_function, она тоже deprecated.
Но это все простое, а есть идеи, как вот это в callback перевести без разбивания на две части? :(
Код:
$text = preg_replace(array(
'#<a href="([^"]*)\[([^"]+)"(.*)>(.*)\[\\2</a>#siU',
'#(<[^<>]+ (src|href))=(\'|"|)??(.*)(\\3)#esiU'
), array(
'<a href="\1"\3>\4</a>[\2',
"sanitize_url('\\1', '\\4', '\\3')"
), $text
);
у меня весь форум в preg_replace, больше 1500 вхождений, уже крыша едет все это переписывать из-за того, что кому-то зачесалось все перевернуть с ног на голову... Задрали...
Судя по всему, никак не обойти, надо бить на части... это еще маленький массив, у меня тут штук двадцать элементов :( Или придется переписывать как-то с preg_replace_callback_array... Если у кого-то есть светлые мысли - прошу поделиться.