Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] preg_replace
lopez86
post
Post #1





Grupa: Zarejestrowani
Postów: 187
Pomógł: 0
Dołączył: 24.12.2006

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


chcę aby preg_replace zamienił to co znajdzie na to co zwróci funkcja

  1. <?php
  2. $content=preg_replace("@<a href="[^#]([^"]*)"[^><]*>@si", tourl(1) ,$content);
  3. ?>


funkcja "tourl()" zamiast dostawać wartości trafione dostaje "\\1" , a mi chodzi o to że ma dostać to co pasuje następnie funkcja to przerabia i pregmatch zamienia na to co zwróciła funkcja.

Nie działa ...
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Kicok
post
Post #2





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

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


W nawiasach kwadratowych podaje się klasę znaków do wyszukiwania, więc wyrażenie [^<a href] nie oznacza:
- dopasuj wszystkie znaki aż do napotkania "<a href"
tylko:
- dopasuj wszystkie znaki, które nie są: "<", "a", " ", "h", "r", "e", "f"


A co do pierwszego problemu, to wyrażenia regularne są domyślnie 'zachłanne', czyli będą się starały dopasować jak najwięcej znaków tylko się da, ale żeby pasowało do wzorca. Używając znaku pytajnika możemy zamienić wyrażenie na 'niezachłanne', czyli starające się dopasować jak najmniej znaków tylko się da, ale żeby pasowało do wzorca. Tak więc wyrażenie: <table>(.*)</table> dopasuje:
Cytat
asfsa
<table>
asdasd</table>
dsfds
<table> saf saf </table>
safsa
<table>
sad sa
asfdsad
</table>
asdsad


natomiast wyrażenie: <table>(.*?)</table> dopasuje:
Cytat
asfsa
<table>
asdasd</table>
dsfds
<table> saf saf </table>
safsa
<table>
sad sa
asfdsad
</table>
asdsad
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 12.10.2025 - 02:00