Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php]Wyrażenia regularne-dziwny błąd
-mieetek-
post 26.06.2006, 12:08:11
Post #1





Goście







Witam. Mam zamiar stworzyć funkcję, która przy odpowiednich warunkach (przy odpowiednich uprawnieniach...,a właściwie ich braku) będzie zamieniała linki na zwykły tekst. Sama funkcja problemem nie jest, jednak problemem zawsze były dla mnie wyrażenia regularne. Udało mi się wymyślić coś takiego:
  1. <?php
  2. $conv = preg_replace("#<a href="(.*)">(.*)</a>#si", "2", $conv);
  3. ?>
- póki co nie zaimplementowałem tego do funkcji sprawdzającej uprawnienia (jeszcez jej nie napisałem)- tylko podpiąłem do BBcode. Testowy plik wygląda tak:
  1. <?php
  2. echo ('<a href="asd.htm">link html</a>');
  3. echo ('<br /><a href="?site=asd">bez dodatkow</a>');
  4. echo ('<br /><a href="?site=asd&id=ble">z id</a>');
  5. echo ('[br] 22a');
  6. ?>

I wyświetla się...
  1. z id
  2. a

krótko mówiąc owszem, zamienia to wyrażenie lnk na tekst, ale tylko jeden- ostatni link. Wydaje mi się, że jest to wina tego wyrażenia, jeśli tak, to co jest w nim źle?
Go to the top of the page
+Quote Post
piotrekkr
post 26.06.2006, 19:56:45
Post #2





Grupa: Zarejestrowani
Postów: 386
Pomógł: 25
Dołączył: 28.09.2005

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


a nie lepiej uzyc htmlspecialchars() (ta funkcja akurat zamieni znaki specialne html na odpowiednie encje czyli beda wyswietlone je jako zwykly tekst w przegladarce) albo striptags() zeby dla nich nie wyswietlac tagow html w trym tez linkow. Poza tym wyrazenia regularne sa zachlanne wiec zapamietaja ci wszystko co jest pomiedzy <a href="" > a </a> czyli jesli masz np :

Kod
<a href="www.onet.pl">onet</a><a href="www.wp.pl"> wp</a>


to wynikiem bedzie
Kod
wp


mozna by sam wrzozec zapisac tak:

Kod
#<a href="([^>]*)"( *)>([^<]*)</a>#si


czyli
  1. <?php
  2. $conv='<a href="www.onet.pl">onet</a><a href="www.wp.pl"> wp</a>';
  3. $conv=preg_replace('#<a href="([^>]*)"( *)>([^<]*)</a>#si','3',$conv);
  4. echo $conv;
  5. //wynik: onet wp
  6. ?>


Ten post edytował piotrekkr 26.06.2006, 20:13:13
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: 13.07.2025 - 07:14