Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] regexp - zamiana adresu URL na link
Forum PHP.pl > Forum > Przedszkole
wiewiorek
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ć?
Sephirus
Kod
"[^\"]{1}https?://([-\w\.]+)+(:\d+)?(/([\w/_\.]*(\?\S+)?)?)?[^\"]{1}"
wNogachSpisz
Do parsowania adresów URL służy funkcja parse_url()

Nie wywarzaj otwartych drzwi.
Nie wynajduj koła na nowo.
Nie używaj wyrażeń regularnych do standardowych zadań.
wiewiorek
hm..... sprawdziłem wyrażenie
  1. [^\"]{1}https?://([-\w\.]+)+(:\d+)?(/([\w/_\.]*(\?\S+)?)?)?[^\"]{1}

dla tekstu:
http://gazeta.pl aaaaaa http://onet.pl dd <a href="http://onet.pl">onet.pl</a> ddd http://wp.pl

Na stronie testera wyrażeń regularnych: http://regexpal.com/ i odnajduje linki prawidłowo poza sytuacją gdy link jest na samym początku tekstu?
Sephirus
Ok masz poprawke
  1. "[^\"]*https?://([-\w\.]+)+(:\d+)?(/([\w/_\.]*(\?\S+)?)?)?[^\"]*"


@wNogachSpisz to może pokaż koledze jak rozwiązać jego problem przy użyciu wspomnianej przez Ciebie funkcji wink.gif
croc
Cytat(wNogachSpisz @ 7.11.2011, 22:06:18 ) *
Do parsowania adresów URL służy funkcja parse_url()

Do parsowania tak. Do sprawdzania poprawności nie. parse_url używa się dla linków, które już są sprawdzone, bo ta funkcja jest zbyt tolerancyjna.
wNogachSpisz
Cytat(croc @ 8.11.2011, 09:17:03 ) *
Do parsowania tak. Do sprawdzania poprawności nie. parse_url używa się dla linków, które już są sprawdzone, bo ta funkcja jest zbyt tolerancyjna.

Wierutna bazdura, funkcja parse_url() może z powodzeniem służyć do walidacji adrsu URL.

Croc, widać że nie masz bladego pojęcia o niczym.
Proszę Cię, dla dobra innych formuwiczów, nie wypowiadaj się,
jeśli już musisz, to do swoich wypowiedzi załączaj klauzule: "mogę się mylić" lub "nie znam się ale wydaje mi się".
Bez tego wprowadzasz zgubną dezinformację.

  1. <?php
  2.  
  3. foreach ( $link_list as $link ) {
  4.  
  5. $plink = parse_url($link);
  6.  
  7. if ( ! isset($plink['scheme']) OR ! in_array($plink['scheme'], array('http', 'https'))) {
  8. continue;
  9. }
  10. if ( ! isset($plink['host'])) {
  11. continue;
  12. }
  13.  
  14. $href = "$plink['scheme']://{$plink['host']}";
  15. $link = $plink['host'];
  16. }
  17.  
  18. ?>
wookieb
@wNogachSpisz uspokój się z zarzutami i spójrz
  1. print_r(parse_url('czy to jest url')); // [path] => czy to jest url

I co? Teraz ja powinienem na Ciebie wbijać?
wNogachSpisz
Cytat(wookieb @ 8.11.2011, 11:46:50 ) *
  1. print_r(parse_url('czy to jest url')); // [path] => czy to jest url

Przeczytaj dokładnie mój code snip,
żeby walidować musisz dodpisać:
  1. isset($parsed_url['scheme']);

Następnym razem przeczytaj kilka razy to co napisałem.
wookieb
Po co? Skoro jest filter_var?
wNogachSpisz
Cytat(wookieb @ 8.11.2011, 11:52:47 ) *
Po co? Skoro jest filter_var?

Jasne, jeśli chcesz tylko walidować URL, filter_var() jest dokładnie tym co potrzebujesz...

Natomiastu tutaj trzeba sparsować URL, do czego służy parse_url(), po drodze można bez konieczności używania innych funkcji sprawdzić czy URL jest poprawny..

Wywołanie jednej funkcji jest tańsze niż wywołanie dwóch.

Jedyny problem z filter_var(), to fakt że wprowadzono je późno, dopiero w wersji 5.2.0
Sephirus
Ok bo ja się pogubiłem - ludzie przecież cała ta dyskusja jest bez sensu... Autor chciał rozwiązania pozwalającego zamienić ciąg:

Kod
jakiś tekst jakiś tekst
jakiś tekst jakiś tekst
ttp://www.strona.pl
jakiś tekst jakiś tekst
jakiś tekst jakiś tekst
ttp://www.inna-strona.com
jakiś tekst jakiś tekst
jakiś tekst jakiś tekst

(sprzed adresów skasowałem H bo mi na linki zamieniało)

na

  1. jakiś tekst jakiś tekst
  2. jakiś tekst jakiś tekst
  3. <a href="http://www.strona.pl">http://www.strona.pl</a>
  4. jakiś tekst jakiś tekst
  5. jakiś tekst jakiś tekst
  6. <a href="http://www.inna-strona.com">http://www.inna-strona.com</a>
  7. jakiś tekst jakiś tekst
  8. jakiś tekst jakiś tekst


Nic nie było o żadnej validacji linków, itd... smile.gif
by_ikar
@wNogahSpisz nie chcę się spierać, ale parse_url parsuje linki, a te link trzeba mieć. Autorowi tematu chodzi o ciąg który może zawierać linki, wówczas parse_url IMO nie ma za bardzo do tego jest potrzebne. Jeden preg_match i odpowiednie wyrażenie.

@up ubiegłeś mnie wink.gif
croc
Cytat(Sephirus @ 8.11.2011, 12:00:10 ) *
Nic nie było o żadnej validacji linków, itd... smile.gif

No tak, ale żeby zamienić, trzeba najpierw znaleźć smile.gif Można byle jak, np. przez wspomnianą funkcję parse_url, która przepuści większość nieprawidłowych linków, a można (większym kosztem) dobrym wyrażeniem regularnym.
nospor
Cytat
No tak, ale żeby zamienić, trzeba najpierw znaleźć Można byle jak, np. przez wspomnianą funkcję parse_url,
Czyli że co? dla parse_url zapodasz cały tekst a on z niego wyłapie url? No raczej nie, do parse_url musisz przekazać już wybrane przez Ciebie url z tekstu a żeby to zrobić musisz tak czy siak użyć wyrażeń regularnych.
wNogachSpisz
W takim razie trzeba wcześniej załadować HTML do Dom:Document, co utworzy obiekt DOM,
następnie przeszukać bloki tekstowe w poszukiwaniu wyrazów rozpoczynających się na to "https?://".

Pozostaje problem zamiany konkretnego adresu url na element anachor to można w sensowny sposób osiągnąć tylko przy pomocy z preg_replace ;p
Lub jakiś inny sposób podziału na wyrazy..
croc
@nospor Masz rację - źle się wyraziłem.

@wnogachspisz - wiesz, że istnieją jeszcze inne protokoły?
wNogachSpisz
Dobrze gdyby autor wrzcił przykładowe dane do przeszukania..

Cytat(croc @ 8.11.2011, 12:09:01 ) *
@wnogachspisz - wiesz, że istnieją jeszcze inne protokoły?

Wiesz.
Jaki z tego morał?
croc
A po co Ci przykładowe dane? o0 Uzależniasz algorytm zamiany URL na linki od tego, jaką ma zawartość? Tzn. jakby miał inną, to byś dał inny algorytm?
wNogachSpisz
croc nie troluj, zaklinam cie.
Sephirus
Mam też parę innych propozycji zamiast wyrażeń regularnych:

1. Można użyć zcze strpos() - znaleźć wszystko co zaczyna się od "http://" i odpowiednio zamienić.
2. Można dać explode('http://',$ciag_znakow) - też da się wtedy to ładnie pozamieniać i użyć implode.

;P

wNogachSpisz
Cytat(Sephirus @ 8.11.2011, 12:26:08 ) *
Mam też parę innych propozycji zamiast wyrażeń regularnych:

1. Można użyć zcze strpos() - znaleźć wszystko co zaczyna się od "http://" i odpowiednio zamienić.
2. Można dać explode('http://',$ciag_znakow) - też da się wtedy to ładnie pozamieniać i użyć implode.

;P


No nie. Trzeba znaleść "wolnostojące" adresy, czyli takie które są otoczone albo przez białe znaki, albo przez początek/koniec bloku..
I to z włączniem contentu chociażby takich tagów jak anachor.
croc
URL-e zawsze są otoczone znakami... niewchodzącymi do poprawnego URL-a. oneeyedsmiley02.png
wNogachSpisz
Cytat(croc @ 8.11.2011, 12:38:47 ) *
URL-e zawsze są otoczone znakami... niewchodzącymi do poprawnego URL-a. oneeyedsmiley02.png

niech ktos z nim cos zrobi, błagam...
croc
A może nie jest tak?

To jest Twoim zdaniem URL?
Kod
programowaniewymagamyśleniahttp://php.planietylkoklepaniajakmałpa
wNogachSpisz
Tak, tak jest..
Tylko że nic z tego nie wynika.
Taka wiedza nie pozwala na bezbłędna zamianę linków na anchory w dowolnym dokumencie HTML

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

zostanie zamienione na :
  1. <a href="#">this is some <a href="#">http://link.me</a> link</a>

co jest oczywiście nieprawidłowe.
croc
Nie nie pozwala, tylko Ty nie umiesz, a to różnica. Nie wymądrzaj się więcej, bo naprawdę mało wiesz.
wookieb
Piaskownice zamknęli, deszcz nie napadał że musicie tutaj obrzucać się błotem? Spokojniej, bo zamknę temat.
croc
Cytat(wookieb @ 8.11.2011, 13:10:23 ) *
Piaskownice zamknęli, deszcz nie napadał że nie musicie tutaj obrzucać się błotem?

Aleś sypnął żarcicho yahoo.gif Przepraszam, ale mam alergię na takich szczekaczy.

A wracając do tematu, to moim zdaniem jedyną odpowiedzią jest dobry wzorzec dla wyr. regularnego (wyszukany z internetu, bo są ludzie, którzy naprawdę dużo czasu temu poświęcili) i będzie hulać.
wNogachSpisz
Cytat(croc @ 8.11.2011, 13:14:32 ) *
A wracając do tematu, to moim zdaniem jedyną odpowiedzią jest dobry wzorzec dla wyr. regularnego (wyszukany z internetu, bo są ludzie, którzy naprawdę dużo czasu temu poświęcili) i będzie hulać.


Sypiesz złotymi radami na lewo i prawo...
Nie ma takiej możliwości, jedno wyrażenie tego nie załatwi, chyba że takie na 3 strony.
Zamknąć oczy, napisać i już nigdy nie zrozumiec co robi i dlaczego nie działa happy.gif.
croc
Trochę dziwne, że nagle zmieniłeś podejście. Przed chwilą polecałeś parse_url, który nieprawidłowo odczyta mnóstwo URL-i, również takich "z życia wziętych". A dobre wyrażenie regularne nie musi wcale być na 3 strony. Co Ci się nie podoba np. w tym?
Kod
^(?#Protocol)(?:(?:ht|f)tp(?:s?)\:\/\/|~\/|\/)?(?#Username:Password)(?:\w+:\w+@)?(?#Subdomains)(?:(?:[-\w]+\.)+(?#TopLevel Domains)(?:com|org|net|gov|mil|biz|info|mobi|name|aero|jobs|museum|travel|[a-z]{2}))(?#Port)(?::[\d]{1,5})?(?#Directories)(?:(?:(?:\/(?:[-\w~!$+|.,=]|%[a-f\d]{2})+)+|\/)+|\?|#)?(?#Query)(?:(?:\?(?:[-\w~!$+|.,*:]|%[a-f\d{2}])+=?(?:[-\w~!$+|.,*:=]|%[a-f\d]{2})*)(?:&(?:[-\w~!$+|.,*:]|%[a-f\d{2}])+=?(?:[-\w~!$+|.,*:=]|%[a-f\d]{2})*)*)*(?#Anchor)(?:#(?:[-\w~!$+|.,*:=]|%[a-f\d]{2})*)?$
wNogachSpisz
Przepiękne wyrażenie, tyle że kompletnie nie nadające się do tego celu.
Piszesz nie na temat.

Pytam grzecznie, uprzejmie i konkretnie, co się stanie z takim przykładem:
  1. <a href="#">this is some http://link.me link</a>

Nie masz na to odpowiedzi, bo brakuje Ci wiedzy i doświadczenia (oraz innych cech, takich nienabywalnych).
Teraz rozmawiają dorośli.
Patrz i się ucz.
Nie troluj.
Sephirus
Ok tu się z zgadzam z @wNogachSpisz w takim przypadku dobre rozwiązanie to zastosować twoją metodę z DOM. Swoją drogą to bardzo rzadki przypadek ale możliwy.
by_ikar
A ja się nie zgodzę i nie muszę używać wcale DOM żeby sprawę załatwić. Można to załatwić jednym wyrażeniem, tyle że z użyciem preg_replace_callback i można załatwić całość w sumie prosto w kilku linijkach:

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

';

$replace = preg_replace_callback('#(?:<a[^>]*>.*?</a>|((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;


Można pewnie to napisać lepiej, to jest tylko taki przykład że da się jednym wyrażeniem i można pominąć to czego nie chcemy wink.gif
wNogachSpisz
BZDURA! Twój pattern błędnie zamienia:
  1. <img src="http://www.wp.pl"/>

Na:
  1. <img src="<a href="http://www.wp.pl"/>"> http://www.wp.pl"/> </a>

Kiła i mogiła.
Bez DOM tego nie zrobisz..
by_ikar
Kolego, nie chce tutaj siać flejmu, bo gdybyś doczytał moją wiadomość do końca to byś zauważył jedną zasadniczą rzecz o której napisałem:

Cytat
Można pewnie to napisać lepiej, to jest tylko taki przykład że da się jednym wyrażeniem i można pominąć to czego nie chcemy


Podałem przykład z tylko jednym tagiem, to jest przykład, nie gotowiec.. :/ trochę na siłę próbujesz udowodnić swoją rację jakby była jedynym słusznym wyjściem..

Jeżeli działa w przypadku anchora co pokazałem w przykładzie, dlaczego nie miałoby działać w przypadku jakiegokolwiek innego tagu? Bo musi tutaj być DOM? Nie musi co udowodniłem swoim przykładem wink.gif a nawet nie trzeba więcej niż 1 wyrażenia i wcale nie musi mieć nie wiadomo ile lini/znaków. wink.gif
wNogachSpisz
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.
abort
@croc:
regexp mocny, ale jednak mi sie nie podoba. A co mi się nie podoba? Wrzuć do przeglądarki kod:

  1. $urls=array (
  2. "http://forum.php.pl/index.php?showtopic=187323&st=20",
  3. "http://195.242.93.150/index.php?showtopic=187323&st=20",
  4. "http://127.0.0.1/",
  5. "http://host"
  6. );
  7.  
  8. foreach ($urls as $url) {
  9. echo "$url ";
  10. if (preg_match ('/^(?#Protocol)(?:(?:ht|f)tp(?:s?)\:\/\/|~\/|\/)?(?#Username:Password)(?:\w+:\w+@)?(?#Subdomains)(?:(?:[-\w]+\.)+(?#TopLevel Domains)(?:com|org|net|gov|mil|biz|info|mobi|name|aero|jobs|museum|travel|[a-z]{2}))(?#Port)(?::[\d]{1,5})?(?#Directories)(?:(?:(?:\/(?:[-\w~!$+|.,=]|%[a-f\d]{2})+)+|\/)+|\?|#)?(?#Query)(?:(?:\?(?:[-\w~!$+|.,*:]|%[a-f\d{2}])+=?(?:[-\w~!$+|.,*:=]|%[a-f\d]{2})*)(?:&(?:[-\w~!$+|.,*:]|%[a-f\d{2}])+=?(?:[-\w~!$+|.,*:=]|%[a-f\d]{2})*)*)*(?#Anchor)(?:#(?:[-\w~!$+|.,*:=]|%[a-f\d]{2})*)?$/', $url))
  11. print "to poprawny URL<br>";
  12. else print "to nie jest poprawny URL<br>";
  13. }


A jak sam dobrze wiesz, wszystkie URLe w tablicy są prawidłowe smile.gif
Generalnie, z tego co widzę, to regexp uwala wszystkie numeryczne adresy IP i wszystkie adresy IP bez POPRAWNEJ domeny (przy czym POPRAWNĄ domeną jest tylko jedna z TLD). Wszelkie domeny "wewnątrzfirmowe" (np. firma.lan) są według tego regexpa niepoprawne. Tak, wiem - regexp to nie resolver - i nie jest od rozwiązywania nazw, więc pomińmy nietypowe/niepubliczne domeny. Ale numeryczne adresy IP są jak najbardziej "valid", podobnie jak adresy z samą tylko nazwą hosta (ciągle aktualny RFC 1035, p. 2.3.1)
wNogachSpisz
@abort
Zlituj się.
Walidacja URLi to nie problem.
Problemem jest wyciąnięcie ich z HTMLa.
abort
wNogachSpisz: własnie - generalnie pytanie było odnośnie metody przetworzenia tekstu źródłowego jako inny, treściowo identyczny tekst, z udogodnieniem w postaci "jeśli jest URL, to dajmy go w wygodniejszy sposób - taki, by user mógł po prostu kliknąć, zamiast przerzucać do paska adresu przez schowek". Tak przynajmniej ja zrozumiałem pierwszy post w wątku.

I teraz ad meritum: jeśli mamy DOWOLNY ciąg znaków, to musimy sprawdzić, czy gdzieś tam nie zapodział się URL. To jest to co sam napisałeś: "Trzeba znaleźć "wolnostojące" adresy, czyli takie które są otoczone albo przez białe znaki, albo przez początek/koniec bloku". Zgodzisz się chyba z moim stwierdzeniem, że skoro "trzeba znaleźć adresy", to musimy mieć/znać metodę na określenie początku i końca dowolnego poprawnego adresu, prawda?

Idąc dalej: mając wyszukany dowolny adres URL możemy otoczyć go w tagi html i zaprezentować w "klikalnej" formie.
Dodatkowe założenie: istniejące już w tekście odnośniki html (np. do obrazków) zostawiamy bez obróbki.

I to w zasadzie koniec tematu - metodologię mamy określoną. Pozostaje wybór narzędzia. W związku z tym nasuwa się pytanie: czy można określić, czy dany ciąg znaków otoczony konkretnymi znakami (białymi znakami) jest adresem URL - i czy da się to zrobić za pomocą regexpa?

Odpowiedź jest jedna: MOŻNA. Można to zrobić za pomocą wyrażenia regularnego (tak jak pisał croc) - zacytowany przez niego regexp daje sobie radę ze znakomitą większością adresów. Jak dla mnie metoda jest OK - zaś chciałem zwrócić uwagi na małe niedoróbki tego regexpa. Niedoróbkami są "tylko i aż" dwie rzeczy: olewanie prostych nazw hostów (bez domen) i olewanie adresów IP podanych w postaci numerycznej.

Oczywiście regexp jest do małej modyfikacji - nie może się zaczynać od "^" i kończyć na "$" - w obu miejscach trzeba dane znaki zamienić na "\s" i po wrzuceniu tego regexpa do preg_replace powinno działać.
wNogachSpisz
Nie doczytałeś, nie można.
Autor tematu ma problem ze swoim wyrażeniem, które zamienia link znajdujący się w atrybucie src znacznika img.
by_ikar
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.
wNogachSpisz
Bzdura.
Skoro można skonstruować takie wyrażenie, to dlaczego tego nie zrobisz?
by_ikar
Cytat(wNogachSpisz @ 9.11.2011, 10:54:12 ) *
Bzdura.
Skoro można skonstruować takie wyrażenie, to dlaczego tego nie zrobisz?


Sory że to napisze ale jesteś totalnym ignorantem. Patrz na mój post wyżej, dałem ci gotowe wyrażenie które pomija tagi: img, a, iframe czyli te tagi o których wspomniał autor tego tematu.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.