Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> funkcja wewnątrz preg_replace
legorek
post 14.03.2005, 22:55:08
Post #1





Grupa: Zarejestrowani
Postów: 411
Pomógł: 35
Dołączył: 27.06.2004
Skąd: Kraków

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


Czy ktoś mi może wytłumaczyć dlaczego nie mogę skorzystać z funkcją wewnątrze preg_replace. Mam taki kod:

  1. <?php
  2.  
  3. function bbcode($text)
  4. {
  5. function unhtmlentities($string)
  6. {
  7.  $trans_tbl = get_html_translation_table(HTML_ENTITIES);
  8.  $trans_tbl = array_flip($trans_tbl);
  9.  return strtr($string, $trans_tbl);
  10. }
  11. $ret = preg_replace(&#092;"/(.*?)/si\", '<b>1</b>', $text);
  12. $ret = preg_replace(&#092;"/(.*?)/si\", '<u>1</u>', $ret);
  13. $ret = preg_replace(&#092;"/(.*?)/si\", '<i>1</i>', $ret);
  14. $ret = preg_replace(&#092;"/
    1. (.*?)
    /si\", \"unhtmlentities('1')\", $ret);
  15. $this->tekst = $ret;
  16. return True;
  17. }
  18.  
  19. ?>

Niestety, ale
  1. <?php
  2.  
  3. $ret = preg_replace(&#092;"/
    1. (.*?)
    /si\", \"unhtmlentities('1')\", $ret);
  4.  
  5. ?>

nie chce działać. Zamiast zwracać wynik funkcji zwraca jej nazwę i warość zmiennej \\1. Zna ktos rozwiązanie?


--------------------
Go to the top of the page
+Quote Post
Liko
post 15.03.2005, 00:06:48
Post #2





Grupa: Zarejestrowani
Postów: 436
Pomógł: 6
Dołączył: 8.11.2003
Skąd: Szczecin

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


Przepraszam, ale chyba coś Ci się pomyliło. Nie ma takiej funkcji jak unhtmlentities. Jest htmlentities" title="Zobacz w manualu PHP" target="_manual.
Go to the top of the page
+Quote Post
legorek
post 15.03.2005, 08:45:40
Post #3





Grupa: Zarejestrowani
Postów: 411
Pomógł: 35
Dołączył: 27.06.2004
Skąd: Kraków

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


Jest, sam ją napisałem (czyt. skopiowałem z manuala;]), znajduje się w kodzie.
  1. <?php
  2.  
  3. function unhtmlentities($string)
  4. {
  5.  $trans_tbl = get_html_translation_table(HTML_ENTITIES);
  6.  $trans_tbl = array_flip($trans_tbl);
  7.  return strtr($string, $trans_tbl);
  8. }
  9.  
  10. ?>


--------------------
Go to the top of the page
+Quote Post
bendi
post 15.03.2005, 09:22:56
Post #4





Grupa: Zarejestrowani
Postów: 401
Pomógł: 5
Dołączył: 14.09.2003
Skąd: Wrocław

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


Modyfikator e dziala jak funkcja eval, wiec poprawna regulka powinna wygladac tak:
  1. <?php
  2.  
  3. $ret = preg_replace(&#092;"/
    1. (.*?)
    /sei\", \"unhtmlentities('1')\", $ret);
  4.  
  5. ?>


--------------------
Go to the top of the page
+Quote Post
legorek
post 15.03.2005, 20:28:25
Post #5





Grupa: Zarejestrowani
Postów: 411
Pomógł: 35
Dołączył: 27.06.2004
Skąd: Kraków

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


Dzięki wielkie, tego właśnie szukałem :-)


--------------------
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: 14.08.2025 - 02:18