PDA

Показать полную графическую версию : Регулярное выражение


venuko
25-07-2010, 11:58
Подскажите регулярку, задача следующая, есть текст выводимы в контенте к примеру: Источник: mail.ru

Нужно чтобы на выходе был такой html код:

Источник: <a href="mail.ru">mail.ru</a>


Т.е. после слова "Источник: " брать текст ссылки и оборачивать её ссылкой.

Delirium
26-07-2010, 01:29
Где оборачивать? Язык какой? Откуда текст берется? Слишком мало данных для мозгового штурма :)

venuko
26-07-2010, 13:35
Где оборачивать? Язык какой? Откуда текст берется? Слишком мало данных для мозгового штурма »

язык php

на входе текст в переменной: Источник: mail.ru

на выходе должен получится html: Источник: <a href="mail.ru">mail.ru</a>

venuko
27-07-2010, 18:02
up.

Delirium
28-07-2010, 03:02
venuko, все равно не пойму, в чем проблема, а что нельзя в переменную записать нечто такое:
string data_from_input = "mail.ru"
string reg_exp = "<a href='" + data_from_input + " '>" + data_from_input + "</a>"

и в код вставить результат reg_exp. Или я неверно понимаю суть задачи?

venuko
28-07-2010, 08:52
venuko, все равно не пойму, в чем проблема, а что нельзя в переменную записать нечто такое:
string data_from_input = "mail.ru"
string reg_exp = "<a href='" + data_from_input + " '>" + data_from_input + "</a>"
и в код вставить результат reg_exp. Или я неверно понимаю суть задачи? »

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

К примеру в контенте в конце может быть разный источник или "Источник: mail.ru" или "Источник: news.ru" и т.д.

$content1 = "Источник: mail.ru";
$content2 = "Источник: news.ru";

Т.е. после пробела двоеточия брать текст сайта и оборачивать его ссылкой самого на себя.

Sham
28-07-2010, 12:27
preg_replace
(
'{Источник\:\s*([\S]+)}i',
'Источник: <a href="http://${1}">${1}</a>',
$text
);

venuko
28-07-2010, 17:26
preg_replace
'{Источник\:\s*([\S]+)}i',
'Источник: <a href="http://${1}">${1}</a>' »

что-то не пойму как применить данный код если данные приходят так в переменной

$content1 = "Источник: mail.ru";

Sham
29-07-2010, 09:32
Это был не код, а наводка. Ваша библия - php.net.

venuko
02-08-2010, 12:06
Это был не код, а наводка. Ваша библия - php.net. »


Спасибо за подсказку. Разобрался, все работает :)

Не подскажете хороший ресурс понятный для тех кто дуб в регулярках?

venuko
02-08-2010, 12:30
Это был не код, а наводка. Ваша библия - php.net. »

сделал так, но как то не верно работает:

$text = "<p>Текст текст текст</p> <p>Источник: mail.ru</p>";

$res = preg_replace('{Источник\:\s*([\S]+)}i','Источник: <a href="http://${1}">${1}</a>',$text);

echo $res;

Sham
02-08-2010, 18:18
\S - непробельные символы (туда и тег войдет). вместо него можно [a-z\.] (набор возможных символов)

хороший ресурс понятный для тех кто дуб »
http://docs.php.net/manual/ru/regexp.reference.php




© OSzone.net 2001-2012