![]() |
![]() |
![]()
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:
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ć? |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Kod "[^\"]{1}https?://([-\w\.]+)+(:\d+)?(/([\w/_\.]*(\?\S+)?)?)?[^\"]{1}"
-------------------- If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;) Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka... |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 233 Pomógł: 87 Dołączył: 6.03.2009 Ostrzeżenie: (40%) ![]() ![]() |
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ń. Ten post edytował wNogachSpisz 7.11.2011, 22:18:42 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 247 Pomógł: 11 Dołączył: 5.09.2009 Ostrzeżenie: (0%) ![]() ![]() |
hm..... sprawdziłem wyrażenie
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? Ten post edytował wiewiorek 8.11.2011, 07:23:08 |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Ok masz poprawke
@wNogachSpisz to może pokaż koledze jak rozwiązać jego problem przy użyciu wspomnianej przez Ciebie funkcji ![]() -------------------- If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;) Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka... |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 706 Pomógł: 108 Dołączył: 12.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
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. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 233 Pomógł: 87 Dołączył: 6.03.2009 Ostrzeżenie: (40%) ![]() ![]() |
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ę.
Ten post edytował wNogachSpisz 8.11.2011, 11:33:20 |
|
|
![]()
Post
#8
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
@wNogachSpisz uspokój się z zarzutami i spójrz
I co? Teraz ja powinienem na Ciebie wbijać? -------------------- |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 1 233 Pomógł: 87 Dołączył: 6.03.2009 Ostrzeżenie: (40%) ![]() ![]() |
Przeczytaj dokładnie mój code snip, żeby walidować musisz dodpisać: Następnym razem przeczytaj kilka razy to co napisałem. Ten post edytował wNogachSpisz 8.11.2011, 11:55:34 |
|
|
![]()
Post
#10
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Po co? Skoro jest filter_var?
-------------------- |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 1 233 Pomógł: 87 Dołączył: 6.03.2009 Ostrzeżenie: (40%) ![]() ![]() |
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 Ten post edytował wNogachSpisz 8.11.2011, 11:57:49 |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
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
Nic nie było o żadnej validacji linków, itd... ![]() Ten post edytował Sephirus 8.11.2011, 12:01:28 -------------------- If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;) Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka... |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 1 798 Pomógł: 307 Dołączył: 13.05.2009 Skąd: Gubin/Wrocław Ostrzeżenie: (0%) ![]() ![]() |
@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 ![]() Ten post edytował by_ikar 8.11.2011, 12:02:38 |
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 706 Pomógł: 108 Dołączył: 12.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
Nic nie było o żadnej validacji linków, itd... ![]() No tak, ale żeby zamienić, trzeba najpierw znaleźć ![]() |
|
|
![]()
Post
#15
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
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.
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 1 233 Pomógł: 87 Dołączył: 6.03.2009 Ostrzeżenie: (40%) ![]() ![]() |
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.. Ten post edytował wNogachSpisz 8.11.2011, 12:14:40 |
|
|
![]()
Post
#17
|
|
![]() Grupa: Zarejestrowani Postów: 706 Pomógł: 108 Dołączył: 12.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
@nospor Masz rację - źle się wyraziłem.
@wnogachspisz - wiesz, że istnieją jeszcze inne protokoły? Ten post edytował croc 8.11.2011, 12:10:17 |
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 1 233 Pomógł: 87 Dołączył: 6.03.2009 Ostrzeżenie: (40%) ![]() ![]() |
|
|
|
![]()
Post
#19
|
|
![]() Grupa: Zarejestrowani Postów: 706 Pomógł: 108 Dołączył: 12.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
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?
|
|
|
![]()
Post
#20
|
|
Grupa: Zarejestrowani Postów: 1 233 Pomógł: 87 Dołączył: 6.03.2009 Ostrzeżenie: (40%) ![]() ![]() |
croc nie troluj, zaklinam cie.
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 18.07.2025 - 01:41 |