Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [RegExp] Alternatywny wybór
Spirit86
post 3.11.2005, 19:55:08
Post #1





Grupa: Zarejestrowani
Postów: 607
Pomógł: 23
Dołączył: 8.09.2004
Skąd: Wrocław

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


Witam.
Wstyd się przyznać, że znów męczę Was o te wyrażenia regularne dry.gif .
Żeby nie zabierać Wam cennego czasu, przejdę od razu do rzeczy.

Chcę osiągnąć taki efekt:
Łańcuch typu
Kod
[url=jakis_string]jakis_opis[/url]
zamienić na
  • Adres typu:
    1. <a href="jakis_string" target="_blank">jakis_opis</a>
    jeżeli jakis_string zawiera przedrostek http|https|ftp|www(przy www trzeba by dodać http:// przed stringiem)
  • Adres typu:
    1. <a href="jakis_string">jakis_opis</a>
    jeżeli jakis_string nie zawiera przedrosteku http|https|ftp|www
Napisałem wyrażenie ogólne na zamiane
Kod
[url=jakis_string]jakis_opis[/url]
:

  1. <?php
  2.  preg_replace("#+?://){1}([a-z0-9-.,?!%*_#:;~&$@/=+()]+)](.*?)#si", "<a class="focus" href="12" target="_blank">3</a>", ...
  3.  
  4. ?>


Ten post edytował Spirit86 3.11.2005, 19:55:56


--------------------
Audio: Metallica, Soil, RHCP, OffSpring, Green Day, "Retro", Gorillaz, Disturbed, Coma
DB: MySQL 4.1 | php: 4.4.3 Pomogłem Ci? Wciśnij przycisk POMÓGŁ.
Go to the top of the page
+Quote Post
Ociu
post 3.11.2005, 20:54:30
Post #2





Grupa: Moderatorzy
Postów: 1 566
Pomógł: 37
Dołączył: 14.05.2003
Skąd: Kraków




Najprościej: "#\[url=(.*?)?(.*?)\](.*?)\[/url\]#si", "<A HREF=\"\\2\" TARGET=\"_blank\">\\3</A>"
Go to the top of the page
+Quote Post
Spirit86
post 4.11.2005, 10:45:52
Post #3





Grupa: Zarejestrowani
Postów: 607
Pomógł: 23
Dołączył: 8.09.2004
Skąd: Wrocław

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


Cytat(Ociu @ 2005-11-03 20:54:30)
Najprościej: "#\[url=(.*?)?(.*?)\](.*?)\[/url\]#si", "<A HREF=\"\\2\" TARGET=\"_blank\">\\3</A>"

ale najmniej bezpiecznie no i nie rozróżnia adresów lokalnych serwera(galeria.html) od adresów zewnętrznych (http://onet.plgaleria.html)


--------------------
Audio: Metallica, Soil, RHCP, OffSpring, Green Day, "Retro", Gorillaz, Disturbed, Coma
DB: MySQL 4.1 | php: 4.4.3 Pomogłem Ci? Wciśnij przycisk POMÓGŁ.
Go to the top of the page
+Quote Post
NuLL
post 4.11.2005, 11:11:39
Post #4





Grupa: Zarejestrowani
Postów: 2 262
Pomógł: 21
Dołączył: 3.05.2004
Skąd: Sopot, Krakow, W-wa

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


Samej regularki nie napisze bo sie ich ucze ale najlatwiej bedzie dodac modyfikator e i wtedy wepchnac do wyrazenia prostego substr()=="" smile.gif


--------------------
Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
Go to the top of the page
+Quote Post
bela
post 4.11.2005, 17:23:08
Post #5


Administrator PHPedia.pl


Grupa: Developerzy
Postów: 1 102
Pomógł: 2
Dołączył: 14.09.2003

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


Target=blank? To przecież herezja w dobie standardów.
  1. <?php
  2. preg_replace(array('/)](.*)/', '/)](.*)/'), array('tu jedno', 'tu drugie'), $string);
  3. ?>


Coś takiego?


--------------------
Go to the top of the page
+Quote Post
Spirit86
post 4.11.2005, 19:48:45
Post #6





Grupa: Zarejestrowani
Postów: 607
Pomógł: 23
Dołączył: 8.09.2004
Skąd: Wrocław

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


Cytat(bela_666 @ 2005-11-04 17:23:08)
Target=blank? To przecież herezja w dobie standardów.

Nie za bardzo rozumiem o co Ci chodzi z jakim standartem to nie jest zgodne? XHTML ?

Niestety Twoje wyrażenie nie działa.
Kod
[url=katalog/index.php]katalog lokalny[/url]

nie zostaje zamieniony sad.gif

Ten post edytował Spirit86 4.11.2005, 20:00:51


--------------------
Audio: Metallica, Soil, RHCP, OffSpring, Green Day, "Retro", Gorillaz, Disturbed, Coma
DB: MySQL 4.1 | php: 4.4.3 Pomogłem Ci? Wciśnij przycisk POMÓGŁ.
Go to the top of the page
+Quote Post
FiDO
post 4.11.2005, 20:13:36
Post #7





Grupa: Przyjaciele php.pl
Postów: 1 717
Pomógł: 0
Dołączył: 12.06.2002
Skąd: Wolsztyn..... Studia: Zielona Góra

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


Cytat
Nie za bardzo rozumiem o co Ci chodzi z jakim standartem to nie jest zgodne? XHTML ?

Wlasnie z XHTML.

A jesli koniecznie chcesz to zrobic, to musisz sie pobawic z flaga e przy wyrazeniu albo zastosowac takie podejscie jak podal bela_666, czyli osobne wyrazenia do wersji z przedrostkiem i bez.


--------------------
Brak czasu :/
Go to the top of the page
+Quote Post
bela
post 4.11.2005, 22:14:06
Post #8


Administrator PHPedia.pl


Grupa: Developerzy
Postów: 1 102
Pomógł: 2
Dołączył: 14.09.2003

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


Cytat(Spirit86 @ 2005-11-04 20:48:45)
Niestety Twoje wyrażenie nie działa.
Kod
[url=katalog/index.php]katalog lokalny[/url]

nie zostaje zamieniony sad.gif

Trzeba dopisać tam sobie / do [a-z, etc] ;]


--------------------
Go to the top of the page
+Quote Post
Spirit86
post 5.11.2005, 12:16:33
Post #9





Grupa: Zarejestrowani
Postów: 607
Pomógł: 23
Dołączył: 8.09.2004
Skąd: Wrocław

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


Cytat(FiDO @ 2005-11-04 20:13:36)
Cytat
Nie za bardzo rozumiem o co Ci chodzi z jakim standartem to nie jest zgodne? XHTML ?

Wlasnie z XHTML.

ej no to ja czegoś nie rozumiem. Mianowicie jak masz stronę z newsami i tam dajesz odnośniki do stron zagranicznych i chciałbyś, aby otwierały się w nowym oknie, to jak chcesz to napisać zgodnie z XHTML.

Swoją drogą to nie znałem żadnej regułki, że w XHTML nie można używać targeta....
Znacznik ten jest opisany argumentem, tj. target="_blank" w przeciwieństwie do selected , który trzeba opisywać selected="selected"


--------------------
Audio: Metallica, Soil, RHCP, OffSpring, Green Day, "Retro", Gorillaz, Disturbed, Coma
DB: MySQL 4.1 | php: 4.4.3 Pomogłem Ci? Wciśnij przycisk POMÓGŁ.
Go to the top of the page
+Quote Post
bela
post 5.11.2005, 12:24:15
Post #10


Administrator PHPedia.pl


Grupa: Developerzy
Postów: 1 102
Pomógł: 2
Dołączył: 14.09.2003

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


Hmm, po pierwsze validator. Po drugie google.

A tak w ogóle to powiedz mi, czemu zmuszasz mnie do otwierania w nowym oknie? Ja nie lubię mieć bałaganu, więc i tak otwieram w nowej zakładce, no ale jeśli chce opuścić stronę to nie mogę zrobić tego bezpośrednio przez link, tylko tab i zamnkąć poprzedni tab... ;]


--------------------
Go to the top of the page
+Quote Post
-SaraniS-
post 8.11.2005, 04:55:06
Post #11





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 2.01.2005
Skąd: Opolskie

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


Cytat(bela_666 @ 2005-11-05 11:24:15)
A tak w ogóle to powiedz mi, czemu zmuszasz mnie do otwierania w nowym oknie?

Hmm... Bo mu za to placa?.. winksmiley.jpg Sam nie takie herezje wyczynialem dla pieniedzy sadsmiley02.gif
Dlatego, poki co, wole jednak pisac w HTML-u, ktory dopuszcza uzywanie target="_blank" cool.gif
Jest tylko jedna granica, ktorej nie przekrocze: tworzenie "osiolkowatych" stron pod IE aaevil.gif


--------------------
Workstation: Hardware: Toshiba Satellite L40-14B Software: Linux 2.6.30.3 - Slackware 12.2 - KDE3.5.10
Server: Hardware: Celeron 850MHz/ 256MiB Software: Linux 2.4.31 - Slackware 10.2 - Apache 2.2.0.59 + PHP 5.1.6 + MySQL 5.0.24a
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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 06:53