Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] odwołanie do funkcji w preg_replace
-Daxis-
post 30.08.2011, 19:29:38
Post #1





Goście







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
Go to the top of the page
+Quote Post
mortus
post 30.08.2011, 21:11:47
Post #2





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


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).

Ten post edytował mortus 30.08.2011, 20:58:54
Go to the top of the page
+Quote Post
Magic WWW
post 30.08.2011, 21:17:44
Post #3





Grupa: Zarejestrowani
Postów: 123
Pomógł: 32
Dołączył: 9.09.2010
Skąd: Brzeg

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


Możesz również użyć modyfikatora e.

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


Ten post edytował Magic WWW 30.08.2011, 21:18:08
Go to the top of the page
+Quote Post
-Daxis-
post 30.08.2011, 22:11:56
Post #4





Goście







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 '['

Go to the top of the page
+Quote Post
by_ikar
post 31.08.2011, 09:27:12
Post #5





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


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ć..

Ten post edytował by_ikar 31.08.2011, 09:29:28
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: 19.07.2025 - 05:18