У меня есть редактор wysiwyg в моем конце, и он отключает первое регулярное выражение, которое я написал. Это в PHP4, используя preg_replace()
. Я занимаюсь URI и связанным текстом.
@<a\shref=\"http[s]?://([^\"]*)\"[]>(.*)<\/a>@siU
Клиент хотел, чтобы все внешние ссылки открывались в новом окне, так что это выражение, которое я использовал для поиска всех (надеюсь) внешних ссылок, но оставляю внутренние ссылки на привязку страниц и т. Д.
Я понял, что редактор wysiwyg также добавляет style="font-weight: bold"
если пользователь выделяет жирный шрифт по ссылке. Я только недавно начал изучать регулярные выражения, поэтому я не уверен, как решить эту проблему.
Как мне это сделать?
это должно соответствовать этому:
/<a\s+([^>]*)href="https?:\/\/([^"]*)"(.*?)>(.*?)<\/a>/
Полезная вещь здесь – ленивый матч. *?
это означает, что он будет соответствовать только столько, сколько ему нужно, в отличие от регулярного матча, который является жадным.
Чтобы продемонстрировать, с помощью этого текста:
abcdabcd
эти регулярные выражения будут иметь разные результаты:
/a.*c/ selects: "abcdabc" /a.*?c/ selects: "abc"