@vgrayster

Замена всех внешних ссылок через редирект

Добрый день.

Есть задача сделать php фильтр, который на вход получает html страницу а на выходе выдает туже самую страницу, но все внешние ссылки меняются на /away.php?url=blabla

Сама по себе задача не сложная, я через preg_replace это быстро сделаю, но у preg_ есть лимит в 100K, если текст больше этого лимита то функции не работают, можно конечно поднять лимит. но хочется чего-то более гибкого.

Какие я вижу варианты
1) Разбирать в DOM дерево и там менять, но тогда Не валидные документы не будут обрабатываться

2) Разбивать текст на куски меньше 100к и там менять, вопрос в том как разбить текст, чтобы граница не прошла по середине ссылки

3) Анализировать по каждой сточке, имхо тоже не лучший вариант.

Есть идеи?
  • Вопрос задан
  • 2632 просмотра
Пригласить эксперта
Ответы на вопрос 1
Wott
@Wott
Конечно криво, но
preg_match или preg_match_all с флогом на сохранение смещения найденного
меняем через str_replace
цикл на следующий слайс с места последнего смещения
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
Бюро Цифровых Технологий Санкт-Петербург
от 120 000 до 180 000 ₽
07 мая 2024, в 14:11
4000 руб./за проект
07 мая 2024, в 14:10
10000 руб./за проект
07 мая 2024, в 14:04
1300 руб./за проект