Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] Problem - regexy
pieto
post
Post #1





Grupa: Zarejestrowani
Postów: 227
Pomógł: 1
Dołączył: 12.05.2002
Skąd: gdańsk

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


mam linki w postaci [[link do strony]] lub [[link do strony|inna nazwa]]
i teraz jak zrobic takie cos:

jeżeli występuje coś po separatorze | niech podstawi tą nazwę w przeciwnym wypadku niech podstawia "link do strony"

z góry dzięki
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
splatch
post
Post #2





Grupa: Zarejestrowani
Postów: 487
Pomógł: 7
Dołączył: 7.01.2004
Skąd: Warszawa

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


Jedynym rozsądnym rozwiązaniem jest użycie preg_replace_callback (już kombinuję nad tym). Zaraz odpowiem.

Edit - odpowiedź
  1. <?php
  2.  
  3. # tekst do przerobki
  4. $text = '[[link|tata]]';
  5.  
  6. # wersja z podwyrazeniami (niezaimpletowana w funkcji)
  7. $regexp = '/(?(?=[[(?:.+)|(?:.+)]])[[(.+)|(.+)]]|[[(.+)]])/';
  8.  
  9. # wersja alternatywna;)
  10. $regexp = '/[[(.+?)(?:|(.+))?]]/';
  11.  
  12. $tex2 = preg_replace_callback($regexp,'wiki_link',$text);
  13.  
  14. function wiki_link($mat) {
  15. if( sizeof($mat) == 3 ) { # jest drugi parametr - [link|opis]
  16. return '<a href=\"'. $mat[1] .'\" title=\"'. $mat[0] .'\">'. $mat[2] .'</a>';
  17. }
  18. return '<a href=\"'. $mat[1] .'\" title=\"'. $mat[0] .'\">'. $mat[1] .'</a>';;
  19. }
  20.  
  21. ?>


Jeśli potrzebujesz dokładnie sprawdzać linki użyj parse_url lub kolejnego regexpa w wiki_link.

Ten post edytował splatch 16.04.2005, 16:45:23
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: 17.10.2025 - 00:48