Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Preg replace i funkcje
fastlone
post
Post #1





Grupa: Zarejestrowani
Postów: 95
Pomógł: 15
Dołączył: 3.06.2010

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


Witajcie.

Chcę, aby w funkcji preg_replace, jako drugi argument (czyli to, co ma wyjść) zastosować funkcję, w której zastosowana jest rzecz "zachowana z argumentu 1.
  1. $content = preg_replace("/\[userlink](.*?)\[\/userlink\]/si",
  2. build_profile_link(format_name($user_usergroupscache['$1']['username'], $user_usergroupscache['$1']['usergroup'], $user_usergroupscache['$1']['displaygroup']), $user_usergroupscache['$1']['uid']), $content);
  3.  

Ma to być swego rodzaju kod BBCode, lecz niestety po wprowadzeniu id w tagi [userlink] - dupa.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Sephirus
post
Post #2





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


Ok po pierwsze (nie wiem czy zauważyłeś) masz błąd:

  1. $content = preg_replace("/\[userlink\](.*?)\[\/userlink\]/si", // brakowało "\" przed "]"


ale do rzeczy... Ogólnie funkcja preg_replace przyjmuje jako 2 argument albo string albo array więc wprost się tego nie da zrobić.

Moja propozycja zczytać to do tablicy poprzez preg_match_all() i utworzyć dwie tabelki
- wejściową, w której umieścisz tekst do podmiany czyli np.: "[userlink]123[/userlink]"
- wyjściową, w której umieścisz wynik funkcji format_name(...)

Nastepnie dopiero dasz preg* lub str* _replace dając jako argumenty te 2 tabelki i po sprawie (IMG:style_emoticons/default/wink.gif)

Jak coś moge dać łatwy przykład

Ten post edytował Sephirus 20.10.2011, 15:32:05
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: 15.10.2025 - 09:20