Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Wyrażenia regularne - złapanie między przecinkami z małym wyjątkiem
konrados
post 13.06.2015, 18:09:57
Post #1





Grupa: Zarejestrowani
Postów: 623
Pomógł: 79
Dołączył: 16.01.2008

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


Hej.

Powiedzmy, że mamy taki string:

  1. $string='
  2. blah<br>
  3. @include (\'file_to_load\')
  4. <br>
  5. @include (\'file_to_load\',\'param1\',\'param2\',\'param3\')
  6. ';


Chcę złapać (i ewentualnie zastąpić funkcją preg_replace_callback) wszystkie wystąpienia @include wraz z ich parametrami, robię więc:

  1.  
  2.  
  3. $string='
  4. blah<br>
  5. @include (\'file_to_load\')
  6. <br>
  7. @include (\'file_to_load\',\'param1\',\'param2\')
  8. ';
  9. $params=[];
  10. '~@include \((,?.*?)\)~',//łapię @include, nawiasy i wszystko między nimi
  11. function ($matches) {
  12. echo '---iteration---';
  13. $params=explode(',',$matches[1]);//rozdzielam parametry wg przecinka
  14. echo '<pre>';
  15. var_dump($params);
  16. echo '</pre>';
  17. return $matches[1];
  18. },
  19. $string
  20. );


No i działa OK, tzn. łapię to @include wraz z parametrami

Problem pojawia się, gdy w $stringu źródłowym, w samym parametrze pojawi się przecinek. Np:
  1. $string='
  2. blah<br>
  3. @include (\'file_to_load\')
  4. <br>
  5. @include (\'file_to_load\',\'param1,coś tam\',['elem'=>'też, przecinek']])
  6. ';


Tutaj w okolicach "param1" oraz czegoś co ma być arrayem są przecinki, chciałbym by były one elementem tego parametru, niestety oczywiście po użyciu funkcji "explode" ona widzi te przecinki i powstają bzdury.

Co mam zrobić, by przecinki będące w apostrofach były brane dosłownie, a nie były rozdzielnikiem parametrów?
Go to the top of the page
+Quote Post

Posty w temacie


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: 22.06.2025 - 18:36