Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> eregi - zamiana linków na aktywne / klikalne
G. Skaruz
post
Post #1





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 14.03.2003
Skąd: Siedlce

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


Witam

Chciałbym zamienić zwykłe link oraz adresy mailowe na klikalne, mam taki kod
  1. function html_activate_links($str)
  2. {
  3. $str = eregi_replace('(((f|ht){1}tp://)[-a-zA-Z0-9@:%_;\+.~#?&//=]+)', '<a href="\\1" class="white">\\1</a>', $str);
  4. $str = eregi_replace('([[:space:]()[{}])(www.[-a-zA-Z0-9@:%_\+.~#?&//=]+)', '\\1<a href="http://\\2" class="white">\\2</a>', $str);
  5. $str = eregi_replace('([_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3})','<a href="mailto:\\1" class="white">\\1</a>', $str);
  6. return $str;
  7. }
  8.  
  9. $strinl = 'odstep <a href="http://www.onet.pl/obrazki/obrazek.jpg" target="_blank">http://www.onet.pl/obrazki/obrazek.jpg</a> - <br /> odstep <a href="../../../obrazki/zdjecie.jpg">link</a> odstep <br /> <a href="mailto:test@test.pl">test@test.pl</a><br /> test2@test2.pl - odstep';
  10. echo html_activate_links($strinl);

ale jako wynik zwraca m.in coś takiego
<a href="mailto:<a href="mailto:test@test.pl" class="white">test@test.pl</a>">

Ktoś może poratować działającym przykładem?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
deha21
post
Post #2





Grupa: Zarejestrowani
Postów: 544
Pomógł: 5
Dołączył: 18.08.2009

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


U mnie to działa dobrze. Zwraca normalny link - <a href="mailto:test@test.pl" class="white">test@test.pl</a>


--------------------
Go to the top of the page
+Quote Post
G. Skaruz
post
Post #3





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 14.03.2003
Skąd: Siedlce

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


Wrzuciłem plik tutaj - http://www.skaruz.com/activate.php
Wynikiem jest m.in coś takiego:
test@test.pl">test@test.pl


--------------------
--
Grzegorz Skaruz / www.skaruz.com
Go to the top of the page
+Quote Post
wdev
post
Post #4





Grupa: Zarejestrowani
Postów: 86
Pomógł: 20
Dołączył: 20.01.2010

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


Pamiętaj, że funkcja analizuje cały kod, a nie tylko to, co chcesz zobaczyć. Więc twój skrypt zamienia też link w atrybucie href elementu a. Jako rozwiązanie proponuję pozostawienie maili, po których następuje cudzysłów (czyli są w atrybucie href) lub </a> (czyli już mają swój link) nieruszonych.
  1. $str = eregi_replace('([_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3})([^(</a>)|"])','<a href="mailto:\\1" class="white">\\1</a>', $str);


Jeżeli chcesz przypisać klasę white tym które są w znaczniku <a></a>, to wiesz, jak to zrobić winksmiley.jpg

PS. POSIX jest zarzucany przez PHP. W 5.3 dostaniesz błąd E_DEPRECATED.


--------------------
-wdev-
Go to the top of the page
+Quote Post
G. Skaruz
post
Post #5





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 14.03.2003
Skąd: Siedlce

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


Cytat(wdev @ 12.11.2010, 16:36:48 ) *
Pamiętaj, że funkcja analizuje cały kod, a nie tylko to, co chcesz zobaczyć. Więc twój skrypt zamienia też link w atrybucie href elementu a. Jako rozwiązanie proponuję pozostawienie maili, po których następuje cudzysłów (czyli są w atrybucie href) lub </a> (czyli już mają swój link) nieruszonych.
  1. $str = eregi_replace('([_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3})([^(</a>)|"])','<a href="mailto:\\1" class="white">\\1</a>', $str);


Jeżeli chcesz przypisać klasę white tym które są w znaczniku <a></a>, to wiesz, jak to zrobić winksmiley.jpg

PS. POSIX jest zarzucany przez PHP. W 5.3 dostaniesz błąd E_DEPRECATED.


Super, o to chodziło.
Serwis jest z tych starszych, więc działa na nie najnowszej wersji PHP.

Wracam z problemem zamiany linków (już nie maili)

  1. $strinl = 'od bawełna :<br />
  2. <a href="http://www.zamotane.pl/image647">aaaaaaa7</a>&nbsp;</p>
  3. <p>Termin wykonania 1-3- gruawełna :<br />
  4. <a href="http://www.zamotane.pl/image_func.php?img=gfx/1a145bf62d7bf120aee119c0c0b749cd.jpg&amp;lang=pl&amp;prod_id=647">http://www.zamotane.pl/image_func.php?img=gfx/1a145bf62d7bf120aee119c0c0b749cd.jpg&amp;lang=pl&amp;prod_id=647</a>&nbsp;</p>
  5. <p>Termin wykonania 1-3- grudnia.</p>dnia.</p>
  6.  
  7. step <a href="http://www.onet.pl/obrazki/obrazek.jpg" target="_blank">http://www.onet.pl/obrazki/obrazek.jpg</a> - <br /> odstep <a href="../../../obrazki/zdjecie.jpg">link</a> odstep <br /> <a href="mailto:test@test.pl">test@test.pl</a><br /> test2@test2.pl - odstep';
  8. echo html_activate_links($strinl);


przy
  1. $str = eregi_replace('(((f|ht){1}tp://)[-a-zA-Z0-9@:%_;\+.~#?&//=]+)', '<a href="\\1" class="white">\\1</a>', $str);
robi się sieczka
  1. <a href="<a href="http://www.zamotane.pl/image647" class="white">http://www.zamotane.pl/image647</a>">aaaaaaa7</a>&nbsp;

Gdy jednak zamienię to na
  1. $str = eregi_replace('(((f|ht){1}tp://)[-a-zA-Z0-9@:%_;\+.~#?&//=]+)([^(</a>|"]))', '<a href="\\1" class="white">\\1</a>', $str);

to nie łapie zwykłych tekstowych linków typu
  1. http://www.onet.pl/obrazki/obrazek.jpg


--------------------
--
Grzegorz Skaruz / www.skaruz.com
Go to the top of the page
+Quote Post
Mephistofeles
post
Post #6





Grupa: Zarejestrowani
Postów: 1 182
Pomógł: 115
Dołączył: 4.03.2009
Skąd: Myszków

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


Tutaj masz helpera z funkcją _auto_link_urls, która zamienia wszystkie linki na klikalne, możesz sobie zobaczyć jak to jest zrobione.
Go to the top of the page
+Quote Post
G. Skaruz
post
Post #7





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 14.03.2003
Skąd: Siedlce

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


Idealnie działające rozwiązanie znalazłem na stronie
http://zenverse.net/php-function-to-auto-c...into-hyperlink/


--------------------
--
Grzegorz Skaruz / www.skaruz.com
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 05:24