Как заставить этот скрипт создания ссылок вести себя с уценкой? - PullRequest
0 голосов
/ 02 апреля 2011

Я использую разметку PHP, но мне также нужен скрипт для преобразования открытых текстовых ссылок в кликабельные.Оба работают независимо, но когда я пытаюсь запустить их вместе, если я сначала запускаю уценку, makelink все еще обрабатывает HTML-код и все портит ... и ... наоборот.Есть идеи, как помешать этому?Я не могу понять регулярное выражение, чтобы игнорировать ссылки стиля уценки

function makeLinks($text) {
    $text = preg_replace('%(((f|ht){1}tp://)[-a-zA-^Z0-9@:\%_\+.~#?&//=]+)%i',
    '<a href="\\1">\\1</a>', $text);
    $text = preg_replace('%([[:space:]()[{}])(www.[-a-zA-Z0-9@:\%_\+.~#?&//=]+)%i',
    '\\1<a href="http://\\2">\\2</a>', $text);

        return $text;
}

образец текста:

###[Title Section](http://domain/folder/page.html)
- Blah blah some text and then a link: www.webpage.org. 

1 Ответ

1 голос
/ 02 апреля 2011

Проблема двойного связывания может быть решена наилучшим образом с помощью догадок и обходных путей. (У нас есть несколько повторяющихся вопросов, но я никогда не найду хорошего ..)

Поскольку уже преобразованные http:// -рлы появляются только сразу после href=" или >, их можно использовать для отрицательных утверждений.

(?<!href="|>)

Должен быть записан в начале вашего первого регулярного выражения:

$text = preg_replace('%(?<!href="|>)(((f|ht){1}tp://)...

Ваш второй регулярное выражение использует: space: в качестве привязки, поэтому он должен быть уже отказоустойчивым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...