Преобразование preg_replace в preg_replace_callback в массиве

У меня есть базовый скрипт в моем чат-движке, который ищет URL-адреса и делает их интерактивными для пользователей. Я использую php 5.6, поэтому получаю предупреждение о preg_replace и использую функцию обратного вызова. Хотя я могу сделать это обычно, используя функцию, я строю этот возврат, используя довольно сложный массив, и возвращаю его в другой сложный массив.

Вот код, который я сейчас использую:

    return preg_replace(
        array(
            '/(?(?=<a[^>]*>.+</a>)(?:<a[^>]*>.+</a>)|([^ = "\']?)((?:https?|ftp|bf2|)://[^<> \n\r]+))/iex',
            '/<a([^>]*)target = "?[^"\']+"?/i',
            '/<a([^>]+)>/i',
            '/(^|\s)(www.[^<> \n\r]+)/iex', 
            '/(([_A-Za-z0-9-]+)(\\.[_A-Za-z0-9-]+)*@([A-Za-z0-9-]+)(\\.[A-Za-z0-9-]+)*)/iex'
        ),
        array(
            "stripslashes((strlen('\\2')>0?'\\1<a href=\"\\2\">\\2</a> <i class=\"fas fa-external-link-alt\"></i>\\3':'\\0'))",
            '<a\\1',
            '<a\\1 target = "_blank">',
            "stripslashes((strlen('\\2')>0?'\\1<a href=\"http://\\2\">\\2</a> <i class=\"fas fa-external-link-alt\"></i>\\3':'\\0'))",
            "stripslashes((strlen('\\2')>0?'<a href=\"mailto:\\0\">\\0</a>':'\\0'))"
        ),
        $text
    );

Мой вопрос в том, как я могу переписать мой второй аргумент, чтобы он работал с использованием preg_replace_callback, поскольку я использую массивы. Этот ЯВЛЯЕТСЯ похож на некоторые другие вопросы, но они не возвращают свои значения и не сравнивают их с использованием массива, и я попытался написать функцию возврата, аналогичную той, что используют другие ответы, и она просто не работает. Любая помощь с этим будет оценена!

См. preg_replace_callback_array.

Wiktor Stribiżew 04.05.2018 23:03

Не тестировал, но в комментариях есть PHP <7.

AbraCadaver 04.05.2018 23:34

Спасибо за совет, он сильно отличается от исходного preg_replace_callback, поэтому мне нужно выяснить, как это сделать сейчас, ха-ха

Kaboom 05.05.2018 00:25
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
3
143
0

Другие вопросы по теме