automatyczne wykrywanie URL

0

to tylko taka propozycja jakby komus sie nudzilo (autorom strony :), gdyz ja jeszcze za slaby jestem :))
moze dalo by sie zrobic aby po wpisaniu adresu URL w tresci automatycznie by wykrywal i podkreslal (zaznaczal w [URL]) dany link?
oczywiscie wszystkiego by nie wykrylo ale np ciagl znakow (bez spacji) zaczynajacy sie na "www" a konczacy np na ".pl", ".com", ".net" :)

0

Według mnie to nie ma sensu, nie podaje się aż tylu linków w jednym poscie, żeby autor nie mógł sam tego zrobić, a to tylko może skomplikować niektórym życie.

0

Automatyczne parsowanie linków jest bardzo przydatne, jeśli oczywiście weźmie się pod uwagę adresy mailowe (@, .pl .. .net i brak spacji), www.nazwa.pl://, www.nazwa.plńcówki (.pl, .com, .tk, .in i tak dalej). Należałoby także zrobić wyjątki, jeśli znajdują się spacje w środku, albo m.in -> to nie jest przezcież link. Tak samo można by było dodać tłumaczenie polskich znaków w adresie strony na poprawną wersję (na www.nazwa.pl jest skrypcik do tego), bo nie działa automatyczne przekierowywanie w każdej przeglądarce.

Zresztą to tylko sugestia.. i tak posty są parsowane pod względem bbCode.

0

A ja jestem za - coraz więcej leniwców, którym nie chce się wstawiać odpowiedniego tagu.. A takie coś jest bardzo wygodne...

0

Jeśli miało by to "utrudnić komuś życie" to można zrobić jako domyślnie włączoną opcje, jak "wyświetlaj uśmieszki w poście".

0

a poza tym przyciski pod mozilla na Linuxie nie chą działać...

0

a poza tym przyciski pod mozilla na Linuxie nie chą działać...

o masz! Znowu coś nie działa? Przy testach brane były pod uwagę praktycznie wszystkie liczące się przeglądarki i jak pamiętam każdemu to działało... i znów coś nie tak? Może masz jakiś zabytek? ech... ręce opadają

0

a poza tym przyciski pod mozilla na Linuxie nie chą działać...

o masz! Znowu coś nie działa? Przy testach brane były pod uwagę praktycznie wszystkie liczące się przeglądarki i jak pamiętam każdemu to działało... i znów coś nie tak? Może masz jakiś zabytek? ech... ręce opadają

Maciek: spokojnie. To chyba jakas zabytkowa Mozilla, bo u mnie dziala bez problemu :)

//uff... - M
// u mnie też spoko wszystko działa - ŁF

0

Dodałem funkcje parse_link, która wykrywa linki i e-maile.. powinno już działać

www.wp.pl

Tylko nie wiem czy tak zostanie.. niech administratorzy zadecydują... [diabel]

0

testing...

to nie powinno być linkiem:
http://wp.pl

 http://wp.pl 

http://wp.pl
http://wp.pl
<image> http://4programmers.net/templates/simple/gfx/emots/eyes.gif </image>
http://adres.pl*<>;
http://adres.pl\backslash.ext
w ww.aspekcie prawa.
http://4p.net/adres/plik.gif:ww.
http://4p.net/adres/plik.gif:)
http://4p.net/adres/:)
http://4p.net/adres:)
http://4p.net/:)
http://4p.net:)

a to nie wiem ;)
http://a
abc.com.pl
www.hehe
WP

prawdiłowe:
http://4programmers.net/templates/simple/gfx/emots/eyes.gif
http://adres.pl/plik.asp#ela
http://adres.pl/plik%20ala.txt
http://adres.pl/?q=ala&h=x#123

nieprawidłowy mail:
to jest małpa@
czyli znak@at
naz_wa@dome_na
naz_wa@[email protected]

prawidłowy mail:
naz_wa@dome_na.xp

0

abc.com.pl powinno być linkiem. w mozilce jak tak wpiszesz, normalnie dodaje http://wwwbo http://www. przed tym. tak samo w konnekcie tekst taki jest parsowany do url'i

email [email protected] powinien byc tylko mailem, jesli domena zawiera sie w mozliwych koncowkach (.pl, .com, .info, .tv, .co.uk, .ru itd...)

natomiast samo .pl .com nie powinno byc linkiem
tak samo http://, m.in.

fajnie Detox, ze sie tym zajales :-)

0

Sytuacja ma się tak: funkcja robi link z wszystkiego co ma postać xxx:yyy lub z początkiem www. - więc samo www z kropką staje się linkiem, podobnie jak http: - najgorsze jest to, że nie mogę znaleźć lepszej - bo wszędzie jest ta sama :| ... - adresy e-mail działają jak należy.

Jeśli ktoś ma dobrą funkcję, która wykrywa linki (jak najbardziej prawidłowo), niech będzie tak miły i się ujawni...

A jak nic sie nie znadzie to samemu się coś naskrobie :)

// co do abc.com.pl to nie będzie linkiem, gdyż niektórzy mogą podawać takie rozwiązania w co poniektórych działach np. form1.edit1.visible .. staje się linkiem i będzie bałagan...

//no jasne - to ma ułatwić - a nie zastąpić podświetlanie linków! - M

0

// co do abc.com.pl to nie będzie linkiem, gdyż niektórzy mogą podawać takie rozwiązania w co poniektórych działach np. form1.edit1.visible .. staje się linkiem i będzie bałagan...

Ależ człowieku ! :) Wystarczy sprawdzić w ciągu znaków (bez spacji) ciąg znaków od ostatniej kropki do spacji występującej po tym całym ciągu. -> abc.com.pl Jeśli znajduje się on wśród stałych ("pl", "com", "tk", "info") to ciąg staje się linkiem. Jeśli od pierwszej spacji przed całyn ciągiem do pierwszej kropki jest "www" lub go nie ma to dodaj tylko "http://". Zwykle "wc3.org" zwraca w oglądarkach http://wc3.org. Należałoby także sprawdzać czy ktoś sobie nie robi jaj - wywalić ciąg jako link jeśli zawiera znaki niedozwolone (są takie chyba :P).

0

Ale ona sie tu nie nada bez poprawek, chodzi o <image></image>

http://4programmers.net/Forum/viewtopic.php?id=52555

0

// co do abc.com.pl to nie będzie linkiem, gdyż niektórzy mogą podawać takie rozwiązania w co poniektórych działach np. form1.edit1.visible .. staje się linkiem i będzie bałagan...

Ależ człowieku ! :) Wystarczy sprawdzić w ciągu znaków (bez spacji) ciąg znaków od ostatniej kropki do spacji występującej po tym całym ciągu. -> abc.com.pl Jeśli znajduje się on wśród stałych ("pl", "com", "tk", "info") to ciąg staje się linkiem. Jeśli od pierwszej spacji przed całyn ciągiem do pierwszej kropki jest "www" lub go nie ma to dodaj tylko "http://". Zwykle "wc3.org" zwraca w oglądarkach http://wc3.org. Należałoby także sprawdzać czy ktoś sobie nie robi jaj - wywalić ciąg jako link jeśli zawiera znaki niedozwolone (są takie chyba :P).

Ależ człowieku ! :) Przecież to jest awykonalne ! sprawdzanie czy końcówka jest "wśród stałych" :| Trzeba by było wypisać domeny wszystkich krajów + wszystkie dodatkowe, takie jak np są "strona.tk" albo "strona.zobacz.to" - jest dużo nietypowych domen nie krajowych ale dodatkowych. Poza tym skrypt trza by było aktualizować skrypt jakby się pojawiła w świecie jakaś nowa domena :| Najlepiej zrobić sprawdzanie http:// i www. na początku - przecież każdy "normalny" (:]) wpisuje albo na początku linka "www" albo "http" a prawie nikt nie zostawia linków w postaci "kurde.pl". Dlatego najbardziej znany skrypt powinien być odpowiadający, jest wykorzystany na dużej ilości forów i nikogo nie zawiódł.

<font size="1"> ```php function text_to_links ($data) { if(empty($data)) { return $data; } $lines = explode("\n", $data); while (list ($key, $line) = each ($lines)) { $line = eregi_replace("([ \t]|^)www\.", " http://www.", $line); $line = eregi_replace("([ \t]|^)ftp\.", " ftp://ftp.", $line); $line = eregi_replace("(http://[^ )\r\n\"\'>]+)", "\\1", $line); $line = eregi_replace("(https://[^ )\r\n\"\'>]+)", "\\1", $line); $line = eregi_replace("(ftp://[^ )\r\n\"\'>]+)", "\\1", $line); $line = eregi_replace("([-a-z0-9_]+(\.[_a-z0-9-]+)*@([a-z0-9-]+(\.[a-z0-9-]+)+))", "\\1", $line); if (empty($newText)) $newText = $line; else $newText .= "\n$line"; } return $newText; } ```

troche poprzerabiać i git :)</span>

0

Przetestowałem kilka funkcji.. i są problemy :-/

Adamo - twoja funkcja też ma błędy(usterki):

http://www.onet <-- jedna kropka po www - odpada - to nie może być link - do poprawy

http://www. <-- tu już chyba jasna sprawa

www.test.com.pl/index.php <-- całkowite zepsucie, zostawienie otwartego tagu..

0

w/g mnie to nad taką drobnostką nie powinno być problemów tylko trza się skupić ;) A widziałem stronkę o adresie www.costam tylko już nie pamiętam jej adresu ale było coś takiego, a www. to też wystarczy dać chyba warunek do większej ilości niż 4 znaków poprzedzających, ale że mi się ciągle mylą wyrażenia regularne to nie pamiętam :) (może ktoś zapoda link do dobrego opisu wyrażen regularnych w php :)). A zresztą ten skrypcik nie nadaje się do tego forum choćby ze względu właśnie na < image >

0

image się nie przejmuj - to już jest rozwiązane - wystarczy tylko funkcja na linki, np. taka jak napisałeś - ale oczywiście bardziej poprawna

0

Drobiazg do wykrywania linków: gubi sie na + np.: http://4programmers.net/Forum/viewtopic.php?id=59576

0

Tak.. już chyba tylko ten znaczek został, czyli <font color="orange">+</span> - dodam go w najbliższym czasie.. teraz niestety mam dużo spraw na głowie, ale będzie do niedzieli :)

0

Te wyrażenia działają na <font color="orange">+</span> :

          $patterns[] = "#(^|[\( \n\r\t])((http(s?)://)(www\.)?([a-z0-9_-]+((/|\.)[\?\#\+%~=&a-z0-9_-]+)+)((<)/[^/ \n\r\)]*)*)#i";
          $replacements[] = "\\1<a href=\"\\2\" target=\"_blank\">\\2</a>";

          $patterns[] = "#(^|[ \n\r\t])((ftp://)(www\.)?([a-z0-9_-]+(\.[a-z0-9_-]+)+)(/[^/ \n\r]*)*)#i";
          $replacements[] = "\\1<a href=\"\\2\" target=\"_blank\">\\2</a>";

          $patterns[] = "#(^|[\n ])([a-z0-9&\-_.]+?)@([\w\-]+\.([\w\-\.]+\.)*[\w]+)#i";
          $replacements[] = "\\1<a href=\"mailto:\\2@\\3\">\\2@\\3</a>";

          $patterns[] = "#(^|[\( \n\r\t])(www\.([a-z0-9_-]+((/|\.)[\?\#\+%~=&a-z0-9_-]+)+)((<)/[^/ \n\r\)]*)*)#i";
          $replacements[] = "\\1<a href=\"http://\\2\" target=\"_blank\">\\2</a>";

          $patterns[] = "#(^|[ \n\r\t])(ftp\.([a-z0-9_-]+(\.[a-z0-9_-]+)+)(/[^/ \n\r]*)*)#i";
          $replacements[] = "\\1<a href=\"ftp://\\2\" target=\"_blank\">\\2</a>";
0

ok, thx Qyon - ale już gotowe - poprawiona wersja message_parser leży już na CVS.. to juz chyba wszystkie znaczki :)

0

Jeszcze taki "błędzik":

http://4programmers.net

Nie można cytować linków, tzn nie linkują się, gdy Od razu po znaczku ">"jest link, bez spacji :/

0

Dopiszę się tu, choć nie chodzi mi o funkcję Detoxa ale o niedziałający link w <url> (wzięty z 'trochę humoru')

http://lofix.x.aresztowany.com/m/hack.php?m=Białystok

a tu bez <url>:
http://lofix.x.aresztowany.com/m/hack.php?m=Białystok

[<font color="blue">dopisane</span>]
Do postu poniżej:
Znalazłem taki link na forum więc nie ja wymyśliłem PL znaki w URL. Jednak taki link jest poprawnie otwierany przez IE i w tym przypadku 'ł' nie jest zamieniany na jakiś %xx :) Więc jednak poprawne? Ale luz - to są skrajne przypadki i można je pominąć dla czytelności kodu i wyrażeń regularnych.

0

A tu mnie Marooned zaskoczyłeś, od kiedy to polskie znaczki mogą być w URL-u? Przecież kiedy wysyłasz polkie znaczki metodą post to powinny być zakodowane urlencode. Owszem, moża by dopisać polskie znaczki zarówno do wyrażeń parsujących tag <url> tylko popwiedz mi po co? Tego i tak sie nie używa/używa zbyt rzadko aby było sens ryzykować wproweadzając kolejn polskie znaczki do plików .php, bo z tym zawsze są problemy (UTF-8) [dlatego jestem w ogole z tym żeby usuwać gdzie się da polskie znaczki ze skryptów i dawać je w postaci liczb szesnastkowych].

0

Mały błędzik - trza by dodać przecinek:
http://film.onet.pl/10565,film.html

0

Mały błędzik - trza by dodać przecinek:
http://film.onet.pl/10565,film.html

Hmm... dziwne, bo wyglada na to, ze jest i powinno dzialac... tj. ja sie nie znam na regexp wiec moze sie myle.

Bo np. http://film.onet.pl/10565,film.html

juz dziala. Tj.:

<a href="http://film.onet.pl/10565,film.html">http://film.onet.pl/10565,film.html</a>

1 użytkowników online, w tym zalogowanych: 0, gości: 1