Замените www.example.com w / <a href="http://www.example.com"> www.example.com </a> - PullRequest
0 голосов
/ 14 октября 2009

Я не очень хорош в регулярных выражениях, но мне нужно преобразовать следующий пример из этого

<li>Creations by Carol - www.driedfloralcreations.com</li>

до

<li>Creations by Carol - <a href="http://www.driedfloralcreations.com" rel="external">www.driedfloralcreations.com</a></li>

Ответы [ 4 ]

2 голосов
/ 14 октября 2009

Если вы ищете только URL-адреса в <li> элементах, отформатированных так же, как и в вашем вопросе, это должно быть намного проще, чем во многих других предлагаемых решениях. Вам не нужно проверять свои URL, я полагаю, вы просто хотите взять список имен сайтов и URL и превратить URL в ссылки.

Ваш шаблон поиска может быть:

<li>(.+) - (https?:\/\/)?(\S+?)<\/li>

И шаблон замены будет:

<li>$1 - <a href="(?2:$2:http\://)$3" rel="external">$3</a></li>

Только что проверил поиск / замену в TextMate, и все заработало. Он добавляет http://, если его еще нет, и в противном случае предполагает, что все, что находится после -, является URL-адресом, если оно не содержит пробела.

Для тестирования регулярных выражений, Rubular - отличный инструмент. Вы можете вставить некоторый текст, и он покажет вам, что соответствует, когда вы вводите регулярное выражение. Это инструмент ruby, но TextMate использует тот же синтаксис регулярных выражений, что и ruby.

2 голосов
/ 14 октября 2009

Как насчет этого в PHP?

$string = '<li>Creations by Carol - www.driedfloralcreations.com</li>';
$pattern = '/(www\.[a-z\d-\.]+\.[a-z]+)/i';
$replacement = '<a href="http://$1" rel="external">$1</a>';
echo preg_replace($pattern, $replacement, $string);

Предполагается, что ваши ссылки всегда www.something.extension.

1 голос
/ 14 октября 2009

Вы должны четко понимать, сколько информации нужно предоставить регулярному выражению, чтобы избежать ложных срабатываний.

Например, достаточно ли шаблона www.something.somethingelse? есть ли другие www в файле, которые будут пойманы?

возможно

что-то - что-то еще является правильным соответствием. Мы не можем угадать, не зная весь ваш файл. Там могут быть другие , которые вы не хотите менять.
0 голосов
/ 14 октября 2009
www\.[a-zA-Z0-9_-]+\.(fr|com|org|be|biz|info|getthelistsomewhere)
...