Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   PHP (http://www.flasher.ru/forum/forumdisplay.php?f=20)
-   -   Нужна функция для преобразование Url в ссылку (http://www.flasher.ru/forum/showthread.php?t=53198)

Rave 28.12.2003 14:50

Нужна функция для преобразование Url в ссылку
 
Сабж... в RegEx не силен:(

Nirva 28.12.2003 18:00

может пояснишь, а? или я туп, или третьего не дано.

Crazy 28.12.2003 18:17

Я так понял, что речь идет о превращении текст http://www.foo.bar в <a href="http://www.foo.bar">http://www.foo.bar</a>.

Не найти готовый код -- признак тяжкой лени.

ultraflasher 28.12.2003 19:35

ВНАТУРЕ :mad:

Rave 28.12.2003 19:46

Внатуре, внатуре...
А скопировать код, блин трудно! :rolleyes:

Сам на свой вопрос отвечаю.
$msg = preg_replace("/(http|ftp)(s)?:(\\/\\/)((\\w|\\.)+)(\\/)?(\\S+)?/i", "<a href=\"\\0\" target=\"_blank\">\\0</a>", $msg);

Nirva 28.12.2003 23:59

мдя.. детям дали автоматы..

juggy 29.12.2003 12:16

http://www.php.spb.ru

SandyMAN 08.01.2004 14:53

mojet prigoditsja, dlja teh kto ne hochet wositsja s RegExp:
eto funkcija rabotaet u menja na odnom saite.

$bulletinStringToOut - eto tekst w katorom mogut wstrechatsja URL's. Pri nahojdenii kotorih oni samenjautsja na linki.

na wiwode otformatirovannii text ( $stringToOut)

=====

PHP код:

function insertLinks($bulletinStringToOut){
                        
# $bulletinStringToOut - free text (with URL's or no)

                        
$bulletinStringToOut = $bulletinStringToOut . " ";

                        
$len = strlen($bulletinStringToOut);
                        
$stringToOut = "";
                        
$pos1 = 0;
                        
$positionSeparate = 0;

                        
$pos = strpos($bulletinStringToOut, "http://");

                        if(
is_integer($pos)){

                                while(
$pos1 < $len){

                                        
$string = substr($bulletinStringToOut, $pos1);
                                        
$pos    = strpos($string, "http://");
                                        
                                        if(
is_integer($pos)){
                                                
# string "href://" found
                                                # replace 'href://xxx' string to '<a href=href://xxx>href://xxx</a>'
                                        
                                                
$stringPrev = substr($string, 0, $pos-1);
                                                
$stringNext = substr($string, $pos);
                                        
                                                
$positionSeparate = strpos($stringNext, " ");
                                                
$positionSeparate2 = strpos($stringNext, "\n");
                                                if(
$positionSeparate2 <= $positionSeparate+1){
                                                        
$positionSeparate = $positionSeparate2;
                                                }


                                                
$href = substr($stringNext, 0, $positionSeparate);
                                                
// remove dots, commas and other symb. from end of the link

                                                
$hrefLen = strlen($href);
                                                
//echo substr($href,$hrefLen-2,1);
                                                
if(substr($href,$hrefLen-2,1) == "." ||
                                                   
substr($href,$hrefLen-2,1) == "," ||
                                                   
substr($href,$hrefLen-2,1) == ";" ||
                                                   
substr($href,$hrefLen-2,1) == ":" ||
                                                   
substr($href,$hrefLen-2,1) == "-"){
                                                        
$href = substr($href,0,$hrefLen-2);
                                                }

                                                
$link = "<a class='stud' href='" . trim($href) . "'>" . trim($href) . "</a> ";
                                        
                                                
$stringToOut .= " $stringPrev $link ";

                                                
$pos1 += $pos + $positionSeparate ;
                                        }
                                        else{
                                                
$stringToOut .= substr($bulletinStringToOut, $pos1);
                                                break;
                                        }
                                }
                        }
                        else{
                                
# URL's not found in text
                                
$stringToOut = $bulletinStringToOut;
                        }

                        return 
$stringToOut;
                } 


Crazy 08.01.2004 15:21

Вызвал вот так:

Код:

insertLinks('See also: http://foo.bar/')
Мертвое зацикливание.

SandyMAN 08.01.2004 17:08

Цитата:

Оригинал написал(а) Crazy
Вызвал вот так:

Код:

insertLinks('See also: http://foo.bar/')
Мертвое зацикливание.

sorry...

nashel bug. spasibo Crazy!

wot wilojil file dla prosmotra w deistwii i dlja skachiwanija
http://www.cs.huji.ac.il/~ra9apz/php_2/url_to_link.php


Часовой пояс GMT +4, время: 13:16.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.