Прежде всего, ров eregi
.Это устарело и скоро исчезнет.
Тогда выполнение этого за один проход, возможно, слишком далеко.Я думаю, вам будет лучше разделить это на три фазы.
Фаза 1 выполняет поиск регулярных выражений по вашему вводу, находит все, что похоже на ссылку, и сохраняет его в списке..
Фаза 2 перебирает список, проверяет, идет ли ссылка на youtube (parse_url
чрезвычайно полезна для этого), и помещает подходящую замену во второй список.
Фаза 3 : теперь у вас есть два списка, один из которых содержит исходные совпадения, а другой содержит желаемые замены.Запустите str_replace поверх исходного текста, предоставив список совпадений для параметра поиска и список замен для замен.
У этого подхода есть несколько преимуществ:
- Регулярное выражение дляизвлечение ссылок может быть относительно простым, так как не нужно принимать во внимание специальные имена хостов
- Проще отлаживать;Вы можете сбросить массивы поиска и замены до фазы 3 и посмотреть, содержат ли они то, что вы ожидаете
- Поскольку вы выполняете все замены за один раз, вы избегаете проблем с перекрывающимися совпадениями или заменой части уже замененнойтекст (в конце концов, замененный текст все еще содержит URL, и вы не хотите его заменять снова)