Intereting Posts
Как создать вращающийся файл журнала с помощью Laravel и Monlog Замена выведенного значения идентификатора SQL с его именем из другой таблицы Импорт 2 класса с тем же именем Php-код для загрузки pdf-файла с сервера не работает UrlGenerationException в строке UrlGenerationException.php 17: Использование PHP, поиск в архивных почтовых сообщениях Gmail Использование Gridfs под Laravel 5.3 с драйвером mongo-php-library 2.2 Что считается лучшей практикой для обработки переменных, хранящихся в файле конфигурации? Создание результатов запроса Doctrine с помощью простого массива JSON Что я должен использовать для аутентификации пользователей в PHP? помещает маркер в URL безопасно, чтобы предотвратить атаки CSRF в приложениях PHP? Обфускация кода PHP str_ireplace не работает с не-ASCII charecters JQuery / AJAX: загрузка внешних DIV с использованием динамического содержимого найти все URL (ссылки) в тексте с помощью php

регулярные выражения – сопоставление всех якорей с необязательными атрибутами

У меня есть редактор wysiwyg в моем конце, и он отключает первое регулярное выражение, которое я написал. Это в PHP4, используя preg_replace() . Я занимаюсь URI и связанным текстом.

 @<a\shref=\"http[s]?://([^\"]*)\"[]>(.*)<\/a>@siU 

Клиент хотел, чтобы все внешние ссылки открывались в новом окне, так что это выражение, которое я использовал для поиска всех (надеюсь) внешних ссылок, но оставляю внутренние ссылки на привязку страниц и т. Д.

Я понял, что редактор wysiwyg также добавляет style="font-weight: bold" если пользователь выделяет жирный шрифт по ссылке. Я только недавно начал изучать регулярные выражения, поэтому я не уверен, как решить эту проблему.

Как мне это сделать?

Related of "регулярные выражения – сопоставление всех якорей с необязательными атрибутами"

это должно соответствовать этому:

 /<a\s+([^>]*)href="https?:\/\/([^"]*)"(.*?)>(.*?)<\/a>/ 

Полезная вещь здесь – ленивый матч. *? это означает, что он будет соответствовать только столько, сколько ему нужно, в отличие от регулярного матча, который является жадным.

Чтобы продемонстрировать, с помощью этого текста:

abcdabcd

эти регулярные выражения будут иметь разные результаты:

 /a.*c/ selects: "abcdabc" /a.*?c/ selects: "abc"