Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] regexp - zamiana adresu URL na link
wiewiorek
post
Post #1





Grupa: Zarejestrowani
Postów: 247
Pomógł: 11
Dołączył: 5.09.2009

Ostrzeżenie: (0%)
-----


Jeśli w tekście są adresy URL, np. http://onet.pl to chciałbym żeby były zamieniane na linki: <a href="http://onet.pl>onet.pl</a> i odpowiednie wyrażenie regularne mam:
  1. "https?://([-\w\.]+)+(:\d+)?(/([\w/_\.]*(\?\S+)?)?)?"


No, ale to wyrażenie regularne zamienia mi na linki też adresy url wewnątrz, np. <img src="..." />, <a href="....">...</a>, <iframe src="..."></iframe> itp. - jak temu przeciwdziałać?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
wNogachSpisz
post
Post #2





Grupa: Zarejestrowani
Postów: 1 233
Pomógł: 87
Dołączył: 6.03.2009

Ostrzeżenie: (40%)
XX---


Nie rozumiem tej nowomowy.
Działa czy nie działa?
Nie działa.
Po co komu coś, co nie działa?
Zrób porządnie, napisz posta, do tego czasu zamilcz.

Ten post edytował wNogachSpisz 8.11.2011, 23:24:45
Go to the top of the page
+Quote Post
by_ikar
post
Post #3





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

Ostrzeżenie: (0%)
-----


Cytat(wNogachSpisz @ 8.11.2011, 23:23:38 ) *
Nie rozumiem tej nowomowy.
Działa czy nie działa?
Nie działa.
Po co komu coś, co nie działa?
Zrób porządnie, napisz posta, do tego czasu zamilcz.


Uważaj z tym ego, bo się rozdymasz i pękniesz kiedyś. To nie jest żadna namowa. Zadałeś pytanie @croc'owi:

Cytat
Pytam grzecznie, uprzejmie i konkretnie, co się stanie z takim przykładem:

Kod
<a href="#">this is some http://link.me link</a>


A ja udowodniłem że można takie coś rozwiązać podałem przykład nawet z masą linków. Działał przykład odnośnie tego co napisałeś? Działał. Napisałem że to nie jest gotowiec? Napisałem. Więc w czym problem? W tym że ze swoim parse_url wyskoczyłeś jak filip z konopi, ktoś ci napisał że bzdury piszesz a teraz się puszysz. W takim wypadku podaj autorowi tematu gotowiec, o którym piszesz do mnie żebym zamilkł jeżeli nie będę takowego posiadać. Nie odniosłem się do pierwszego posta w tym temacie, tylko do twojego posta i udowodniłem że jesteś w błędzie. Strasznym jesteś hipokrytą, twoje rozwiązanie wcale nie działa (parse_url) i nie zadziała, więc według tego co napisałeś:

Cytat
Po co komu coś, co nie działa?
Zrób porządnie, napisz posta, do tego czasu zamilcz.


PS prosił bym jakiegoś moda o uspokojenie @wNogachSpisz bo trochę przegina..

EDIT: na szybkiego działający przykład do znaczników o których napisał autor tematu, czyli gotowiec:

Kod
<?php

$str = '

<a href="http://example.com"> http://example.com </a> <br><br>

smoe text http://example.com smoe text <a href="http://example.com"> http://example.com </a> smoe text<br>
some text https://example.com some text <a href="https://example.com"> https://example.com </a> smoe text<br>
smoe text http://subdomian.example.com smoe text <a href="http://subdomian.example.com"> http://subdomian.example.com </a> smoe text<br>
some text https://subdomian.example.com some text <a href="https://subdomian.example.com"> https://subdomian.example.com </a> smoe text<br>
smoe text http://www.example.com smoe text <a href="http://www.example.com"> http://www.example.com </a> smoe text<br>
some text https://www.example.com some text <a href="https://www.example.com"> https://www.example.com </a> smoe text<br>
smoe text http://www.subdomian.example.com smoe text <a href="http://www.subdomian.example.com"> http://www.subdomian.example.com </a> smoe text<br>
some text https://www.subdomian.example.com some text <a href="https://www.subdomian.example.com"> https://www.subdomian.example.com </a> smoe text

<img src="http://example.com/file.jpg"> some text
<iframe src="http://example.com/"> some text http://example.com/ some text</iframe>

';

$replace = preg_replace_callback('#(?:<a[^>]*>.*?</a>|<iframe[^>]*>.*?</iframe>|<img[^>]*>|((f|ht)tp(s)?://[^\s]+))#is', 'callbackFunction', $str);

function callbackFunction($matches)
{
    if(!empty($matches[1]))
    {
        return '<a href="'.$matches[1].'"> '.$matches[1].' </a>';
    } else
    {
        return $matches[0];
    }
}

echo $replace;


rozwiązanie śmieszne, ale działające o co tak bardzo zabiega @wNogachSpisz. Da się jednym wyrażeniem? Ciekawe co tym razem wymyślisz i napiszesz że jest błędne.

Ten post edytował by_ikar 9.11.2011, 08:52:06
Go to the top of the page
+Quote Post

Posty w temacie
- wiewiorek   [PHP] regexp - zamiana adresu URL na link   7.11.2011, 19:50:36
- - Sephirus   Kod"[^\"]{1}https?://...   7.11.2011, 21:59:26
- - wNogachSpisz   Do parsowania adresów URL służy funkcja parse_url(...   7.11.2011, 22:06:18
|- - croc   Cytat(wNogachSpisz @ 7.11.2011, 22:06...   8.11.2011, 09:17:03
- - wiewiorek   hm..... sprawdziłem wyrażenie [PHP] pobierz, plain...   8.11.2011, 07:21:56
- - Sephirus   Ok masz poprawke [PHP] pobierz, plaintext "[...   8.11.2011, 08:51:08
- - wNogachSpisz   Cytat(croc @ 8.11.2011, 09:17:03 ) Do...   8.11.2011, 11:25:12
- - wookieb   @wNogachSpisz uspokój się z zarzutami i spójrz [PH...   8.11.2011, 11:46:50
- - wNogachSpisz   Cytat(wookieb @ 8.11.2011, 11:46:50 )...   8.11.2011, 11:51:02
- - wookieb   Po co? Skoro jest filter_var?   8.11.2011, 11:52:47
- - wNogachSpisz   Cytat(wookieb @ 8.11.2011, 11:52:47 )...   8.11.2011, 11:54:49
- - Sephirus   Ok bo ja się pogubiłem - ludzie przecież cała ta d...   8.11.2011, 12:00:10
|- - croc   Cytat(Sephirus @ 8.11.2011, 12:00:10 ...   8.11.2011, 12:04:19
- - by_ikar   @wNogahSpisz nie chcę się spierać, ale parse_url p...   8.11.2011, 12:01:40
- - nospor   CytatNo tak, ale żeby zamienić, trzeba najpierw zn...   8.11.2011, 12:07:07
- - wNogachSpisz   W takim razie trzeba wcześniej załadować HTML do D...   8.11.2011, 12:08:16
- - croc   @nospor Masz rację - źle się wyraziłem. @wnogachs...   8.11.2011, 12:09:01
- - wNogachSpisz   Dobrze gdyby autor wrzcił przykładowe dane do prze...   8.11.2011, 12:11:54
- - croc   A po co Ci przykładowe dane? o0 Uzależniasz algory...   8.11.2011, 12:13:17
- - wNogachSpisz   croc nie troluj, zaklinam cie.   8.11.2011, 12:15:22
- - Sephirus   Mam też parę innych propozycji zamiast wyrażeń reg...   8.11.2011, 12:26:08
- - wNogachSpisz   Cytat(Sephirus @ 8.11.2011, 12:26:08 ...   8.11.2011, 12:36:28
- - croc   URL-e zawsze są otoczone znakami... niewchodzącymi...   8.11.2011, 12:38:47
- - wNogachSpisz   Cytat(croc @ 8.11.2011, 12:38:47 ) UR...   8.11.2011, 12:53:08
- - croc   A może nie jest tak? To jest Twoim zdaniem URL? K...   8.11.2011, 12:58:44
- - wNogachSpisz   Tak, tak jest.. Tylko że nic z tego nie wynika. Ta...   8.11.2011, 13:06:09
- - croc   Nie nie pozwala, tylko Ty nie umiesz, a to różnica...   8.11.2011, 13:07:04
- - wookieb   Piaskownice zamknęli, deszcz nie napadał że musici...   8.11.2011, 13:10:23
|- - croc   Cytat(wookieb @ 8.11.2011, 13:10:23 )...   8.11.2011, 13:14:32
- - wNogachSpisz   Cytat(croc @ 8.11.2011, 13:14:32 ) A ...   8.11.2011, 13:19:06
- - croc   Trochę dziwne, że nagle zmieniłeś podejście. Przed...   8.11.2011, 13:32:36
|- - abort   @croc: regexp mocny, ale jednak mi sie nie podoba....   9.11.2011, 00:03:19
- - wNogachSpisz   Przepiękne wyrażenie, tyle że kompletnie nie nadaj...   8.11.2011, 13:41:27
- - Sephirus   Ok tu się z zgadzam z @wNogachSpisz w takim przypa...   8.11.2011, 14:15:43
- - by_ikar   A ja się nie zgodzę i nie muszę używać wcale DOM ż...   8.11.2011, 20:07:54
- - wNogachSpisz   BZDURA! Twój pattern błędnie zamienia: [HTML] ...   8.11.2011, 22:16:03
- - by_ikar   Kolego, nie chce tutaj siać flejmu, bo gdybyś docz...   8.11.2011, 23:08:23
- - wNogachSpisz   Nie rozumiem tej nowomowy. Działa czy nie działa? ...   8.11.2011, 23:23:38
|- - by_ikar   Cytat(wNogachSpisz @ 8.11.2011, 23:23...   9.11.2011, 08:40:44
- - wNogachSpisz   @abort Zlituj się. Walidacja URLi to nie problem. ...   9.11.2011, 00:13:59
- - abort   wNogachSpisz: własnie - generalnie pytanie było od...   9.11.2011, 00:51:32
- - wNogachSpisz   Nie doczytałeś, nie można. Autor tematu ma problem...   9.11.2011, 00:58:43
- - wNogachSpisz   Bzdura. Skoro można skonstruować takie wyrażenie, ...   9.11.2011, 10:54:12
- - by_ikar   Cytat(wNogachSpisz @ 9.11.2011, 10:54...   9.11.2011, 12:39:03


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 4.10.2025 - 17:44