Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Parsowanie tablicy z preg_replace?
LamaMASTER
post
Post #1





Grupa: Zarejestrowani
Postów: 160
Pomógł: 0
Dołączył: 27.03.2006

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


Zrobiłem sobie taką funkcję:
  1. <?php
  2.  
  3. function [...]
  4. {
  5. $szukaj = array (
  6. "#\[(.*?)\]#si"
  7. );
  8. $zamien = array (
  9. "echo '\\1';"
  10. );
  11. return preg_replace($szukaj, $zamien, [...]);
  12. }
  13.  
  14. ?>

Specialnie dodałem po jednej wartości do tablic. Działa on w ten sposób, że przy zastosowaniu funkcji zamienia mi np. [cokolwiek] na "echo 'cokolwiek'". Problem w tym, że preg_replace nie parsuje php i dlatego moje "echo 'cokolwiek'" pozostaje widoczne w kodzie (nawet jeżeli dodam <? i ?> to też je widać). Pomyślałem więc o eval. Zrobiłem wpierw tak:
  1. <?php
  2.  
  3. function [...]
  4. {
  5. $szukaj = array (
  6. "#\[(.*?)\]#si"
  7. );
  8. $zamien = array (
  9. "echo '\\1';"
  10. );
  11. $wynik = preg_replace($szukaj, $zamien, [...]);
  12. return eval($wynik);
  13. }
  14.  
  15. ?>

Ale wtedy miałem parse error gdy kod zawierał np. normalny tekst czy tagi html. Pomyślałem więc o evaluowaniu samej tablicy zamień:
  1. <?php
  2.  
  3. return preg_replace($szukaj, eval($zamien), [...]);
  4.  
  5. ?>

Ale też miałem byki, bo eval nie parsuje tablic. Zdecydowałem się na najwolniejszą z możliwości:
  1. <?php
  2.  
  3. function [...]
  4. {
  5. $szukaj = array (
  6. "#\[(.*?)\]#si"
  7. );
  8. $zamien = array (
  9. eval("echo '\\1';")
  10. );
  11. return preg_replace($szukaj, $zamien, [...]);
  12. }
  13.  
  14. ?>

Teraz tekst jest parsowany, ale mam błędy w wynikach, ponieważ tekst zostaje parsowany ZANIM preg_replace go zamieni, czyli w rezultacie widzę "/1" zamiast "cokolwiek".
Może zadanie trudne - ale jak sobie poradzić z tym, żeby preg_replace najpierw zamieniało, a potem TYLKO zamieniony tekst został parsowany?
Go to the top of the page
+Quote Post

Posty w temacie
- LamaMASTER   Parsowanie tablicy z preg_replace?   7.04.2006, 21:02:22
- - phobos   Moze takie cos pomorze [PHP] pobierz, plaintext ...   7.04.2006, 21:21:34
- - LamaMASTER   Z tym już kombinowałem, tzn. samo danie \...   7.04.2006, 21:31:18
- - phobos   tak [PHP] pobierz, plaintext <?php funct...   7.04.2006, 22:29:59
- - LamaMASTER   Też próbowałem, ale przypuśćmy, że robię sobie tak...   8.04.2006, 08:33:01
- - Wave   może preg_replace_callback ? albo modyfikator ...   8.04.2006, 11:32:44
- - phobos   ej czyli ty chcesz cos takiego w tablicy chcesz m...   8.04.2006, 12:59:06
- - LamaMASTER   Wave - posprawdzam. Phobos - nie sugeruj się przyk...   9.04.2006, 18:32:05
- - phobos   aha czyli ty chcesz aby byla taka funkcja ktora pr...   9.04.2006, 21:56:42
- - LamaMASTER   Nieeee. Pousuwać nawiasy to ja mogę za pomocą str_...   10.04.2006, 19:49:03
- - phobos   ok man zrobilem cos takiego funckja ktora w teksci...   10.04.2006, 21:52:35
- - LamaMASTER   Wielkie dzięki, to jest już postęp. Zastosowałem t...   11.04.2006, 10:41:09
- - phobos   po pierwsze primo mussz zamienic [PHP] pobierz, p...   11.04.2006, 12:01:49
- - LamaMASTER   Cytatpo pierwsze primo mussz zamienic nie dawaj t...   11.04.2006, 13:02:07
- - phobos   sluchaj ale jest jeden szczegół popatrz dla takieg...   11.04.2006, 15:20:13
- - LamaMASTER   Kurcze Ty to masz łeb Teraz się trochę pogubiłem,...   11.04.2006, 15:56:16
- - phobos   mam takie cos tylko tam se pozniej pozamieniaj na ...   11.04.2006, 16:35:53
- - LamaMASTER   Ale kombinujesz na około, jak było print tak jest ...   11.04.2006, 16:47:16
- - phobos   tzn chodzi o to ze jak masz <div....> to poz...   11.04.2006, 16:57:32
- - LamaMASTER   O to zleksza kiepsko. Czemu jest ten parse error? ...   11.04.2006, 17:03:05
- - phobos   w php nie mozesz uzywac sobie tagów html bo wyskak...   11.04.2006, 17:13:03


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 Aktualny czas: 20.08.2025 - 16:46