Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] odwołanie do funkcji w preg_replace
Forum PHP.pl > Forum > Przedszkole
Daxis
Cześć
Mam takie oto wyrażenie:
  1. $post = preg_replace("#\[COLOR=rgb\((.*)\)\]#", "[color=\#" . $this->rgb2hex($1) . " . "\"]", $post);

Niestety wygląda na to że nie mogę użyć $1 odwołując się do funkcji rgb2hex, może mi ktoś jakoś pomóc to naprawić? Lkingsmiley.png
mortus
Skorzystaj z preg_replace_callback():
  1. $post = preg_replace_callback("#\[COLOR=rgb\((.*)\)\]#",
  2. create_function(
  3. '$matches',
  4. 'return "[color=#{$this->rgb2hex($matches[1])}]";'
  5. ),
  6. $post);

Chyba jakoś tak.

Choć wydaje mi się, że problemem może być wyrażenie regularne.

Wcześniej spróbuj zamiast $this->rgb2hex($1) użyć $this->rgb2hex(\1).
Magic WWW
Możesz również użyć modyfikatora e.

  1. $post = preg_replace('#\[COLOR=rgb\((.*)\)\]#e', '[color="#$this->rgb2hex($1)"]', $post);
Daxis
Cytat(mortus @ 30.08.2011, 21:11:47 ) *
Skorzystaj z preg_replace_callback():
  1. $post = preg_replace_callback("#\[COLOR=rgb\((.*)\)\]#",
  2. create_function(
  3. '$matches',
  4. 'return "[color=#{$this->rgb2hex($matches[1])}]";'
  5. ),
  6. $post);

Chyba jakoś tak.

Choć wydaje mi się, że problemem może być wyrażenie regularne.

Wcześniej spróbuj zamiast $this->rgb2hex($1) użyć $this->rgb2hex(\1).


Niestety zamiana $1 na \1 nie pomaga, dalej wywala błąd, natomiast to co podałeś z preg_replace_callback wypluwa
Kod
Fatal error: Using $this when not in object context


Cytat(Magic WWW @ 30.08.2011, 21:17:44 ) *
Możesz również użyć modyfikatora e.

  1. $post = preg_replace('#\[COLOR=rgb\((.*)\)\]#e', '[color="#$this->rgb2hex($1)"]', $post);



Kod
Niestety to również nie działa
[code]Parse error: syntax error, unexpected '['

by_ikar
Kod
$post = preg_replace('#\[COLOR=rgb\((.*)\)\]#', '[color=#\'.$this->rgb2hex($1).\']', $post);


?

Ogólnie to powiedz dokładniej co chcesz zrobić, bo nie wiem czy ty chcesz żeby ten kolor od razu ci zamieniło, czy chcesz tylko przekazać kolor, a w pliku masz html mieszany z php i tam się to wyświetla, czy coś, bo tak to ciężko stwierdzić co chcesz zrobić..
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.