URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 5728
[ Назад ]

Исходное сообщение
"поиск ссылок и преобразование в теги"

Отправлено ALUM , 20-Сен-06 18:09 
Возможно ли на PERL сделать следующее преобразование:

замена в тексте строк " http://* " (звёздочка - любое число любых символов)
в строки " <a href='http://*'>http://*</a> " (звёздочка - те самые символы из исходной строки)

Спасибо.


Содержание

Сообщения в этом обсуждении
"поиск ссылок и преобразование в теги"
Отправлено Аноним , 20-Сен-06 18:27 
да, возможно.

"поиск ссылок и преобразование в теги"
Отправлено Dimitry , 21-Сен-06 03:57 
>да, возможно.


Я обычно делаю примитивно по старинке :

@a=split(" http://",$text);
for($i=1;$i<$a;$i++) {$href=$a[$i]; $a[$i]="<a href=http://$href>http://$href</a>";}
$text=join(" ",@a);


"поиск ссылок и преобразование в теги"
Отправлено ALUM , 21-Сен-06 09:30 
>>да, возможно.
>
>
>Я обычно делаю примитивно по старинке :
>
>@a=split(" http://",$text);
>for($i=1;$i<$a;$i++) {$href=$a[$i]; $a[$i]="<a href=http://$href>http://$href</a>";}
>$text=join(" ",@a);

чего-то не получилось...

$text = "drlkj, jdlrfjk http://forum.opennet.ru fsdf. lsksjk owopfhj http://www.freebsd.org - jghf!";

@a=split(" http://", $text);
for($i=1; $i<$a; $i++)
{
$href=$a[$i];
$a[$i]="<a href=http://$href>http://$href</a>";
}
$text=join(" ", @a);

print $text;

---------------
drlkj, jdlrfjk forum.opennet.ru fsdf. lsksjk owopfhj www.freebsd.org - jghf!


"поиск ссылок и преобразование в теги"
Отправлено ALUM , 21-Сен-06 10:05 
>>>да, возможно.
>>
>>
>>Я обычно делаю примитивно по старинке :
>>
>>@a=split(" http://",$text);
>>for($i=1;$i<$a;$i++) {$href=$a[$i]; $a[$i]="<a href=http://$href>http://$href</a>";}
>>$text=join(" ",@a);
>
>чего-то не получилось...
>
>$text = "drlkj, jdlrfjk http://forum.opennet.ru fsdf. lsksjk owopfhj http://www.freebsd.org - jghf!";
>
>@a=split(" http://", $text);
$size=@a
>for($i=1; $i<$size; $i++)
>{
> $href=$a[$i];
> $a[$i]="<a href=http://$href>http://$href</a>";
> }
>$text=join(" ", @a);
>
>print $text;
>
>---------------
drlkj, jdlrfjk <a href=http://forum.opennet.ru fsdf. lsksjk owopfhj>http://forum.opennet.ru fsdf. lsksjk owopfhj</a> <a href=http://www.freebsd.org - jghf!>http://www.freebsd.org - jghf!</a>



"поиск ссылок и преобразование в теги"
Отправлено ALUM , 21-Сен-06 12:31 
>>да, возможно.
>
>
>Я обычно делаю примитивно по старинке :
>
>@a=split(" http://",$text);
>for($i=1;$i<$a;$i++) {$href=$a[$i]; $a[$i]="<a href=http://$href>http://$href</a>";}
>$text=join(" ",@a);

Заработало вот в таком виде:
-----------------
@a = split("http://", $Text);
$Size = @a;

for($i = 1; $i < $Size; $i++)
{
@b=split(" ", $a[$i]);
$b[0] = "[<a href=http://".$b[0]."><b>http://".$b[0]."</b></a>]";
$a[$i] = join(" ", @b);
}

$Text = join(" ", @a);
-----------------

Только перед первой ссылкой лепит лишний пробел. Вроде не заметно, но некрасиво, неточно как-то...


"поиск ссылок и преобразование в теги"
Отправлено madskull , 26-Сен-06 17:19 
>Возможно ли на PERL сделать следующее преобразование:
>
>замена в тексте строк " http://* " (звёздочка - любое число любых
>символов)
>в строки " <a href='http://*'>http://*</a> " (звёздочка - те самые символы из исходной строки)
>
>Спасибо.

$Text =~ s,(http://.+?)(?=\s),<a href='$1'>$1</a>,g;


"поиск ссылок и преобразование в теги"
Отправлено ALUM , 29-Сен-06 17:31 
>>Возможно ли на PERL сделать следующее преобразование:
>>
>>замена в тексте строк " http://* " (звёздочка - любое число любых
>>символов)
>>в строки " <a href='http://*'>http://*</a> " (звёздочка - те самые символы из исходной строки)
>>
>>Спасибо.
>
>$Text =~ s,(http://.+?)(?=\s),<a href='$1'>$1</a>,g;

Респект и Уважуха!
Респект и Уважуха!!
Респект и Уважуха!!!