Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: preg_match
Forum PHP.pl > Forum > PHP
Dex1987
Witam,

Nie moge sobie poradzic z wyrazeniami regularnymi. Moze mi ktos powie jak powinno to wygladac.

Mam sobie:

  1. <?php
  2. preg_match (&#092;"/{$([a-zA-Z0-9]+)}/\", $file_content)
  3. ?>


i to powinno znajdowac wszystko {$tu_jakis_ciag_znakow} ale mi pokazuje ze nie ma czegos takiego. A zeby bylo smieszniej to wfunkcji preg_replace to znajduje :/.

Z gory dzieki za pomoc.
crash
Źle napisałeś to wyrażenie oraz jednak lepsze będzie użycie preg_match_all" title="Zobacz w manualu PHP" target="_manual i przeglądanie wyjściowej tablicy (np. $out):
  1. <?php
  2. preg_match_all('/{$([a-zA-Z0-9_]+)}/', $tresc, $out);
  3. ?>
Dex1987
Nie chce korzystac zpreg_match_all bo to ma zwrucic albo true albo false jesli zwroci true to robic cos tam ... to /\{\$([a-zA-Z0-9_]+)\}/ cos nie dziala.

Caly kod wyglada tak: index.php

  1. <?php
  2.  
  3. $file_name = &#092;"index.html\"; /* Nazwa pliku szablonu. */
  4.  
  5. $title = &#092;"cos tam\"; /* Zmienna do parsowania. */
  6. $name = &#092;"cos tam innego\"; /* Zmienna do parsowania. */
  7.  
  8. $file_content = &#092;"<?php /* File '\" .$file_name. \".php' created \" .date ('d.m.Y - H:i:s'). \" by cos tam mojego. */ ?>nn\"; /* Ten tekst dodaje na samej górze. */
  9.  
  10. $file_open  = fopen ($file_name, \"r\"); /* Wiadome */
  11. $file_content .= fread ($file_open, 99999);
  12.  fclose ($file_open);
  13.  
  14. if (preg_match (\"/{$([a-zA-Z0-9]+)}/\", $file_content)) { /* Jeśli znajdzie {$ciag_znakow} to wykona preg_replace */
  15.  
  16. $file_content = preg_replace ('/{$([a-zA-Z0-9]+)}/', '<?php echo $$1; ?>', $file_content);
  17.  
  18. } else {
  19.  
  20. echo \"Nie ma\";
  21. echo \"<br><br>\";
  22. }
  23.  
  24. $file_open = fopen ($file_name. \".php\", \"w\");
  25.  fputs ($file_open, $file_content);
  26.  fclose ($file_open);
  27.  
  28. include ($file_name. \".php\"); /* Otwiera sparsowany plik */
  29.  
  30. ?>


a index.html

  1.  
  2. <title>{$title}</title>
  3.  
  4. </head>
  5.  
  6. <font face="verdana" size="1">Nazwa systemu: <b>{$name}</b>.</font>
  7.  
  8. </body>
  9. </html>


I teraz jesli znajdzie tylko {$zmienna} to wykonuje preg_replace jesli np {$zmienna cos} to wykonuje inne preg_replace ... Ten kod narazie bylejak pisany. Jesli macie jakies propozycje co do zmiany parsowania to prosze o sugestie.

Pozdrawiam.
crash
  1. <?php
  2. $tresc = 'To jest test {$ble_ble_123} i już...';
  3.  
  4. if(preg_match('/{$([a-zA-Z0-9_]+)}/', $tresc))
  5. {
  6. echo 'Znaleziono';
  7. }
  8. else
  9. {
  10. echo 'Nie znaleziono';
  11. }
  12. ?>

Wyświetla: Znaleziono
NuLL
Przenosze Skrypty php do php
Dex1987
Dzieki crashu poprostu zamiast "/\{\$([a-zA-Z0-9_]+)\}/" trzeba bylo zmienic na '/\{\$([a-zA-Z0-9_]+)\}/'. To co ja wczesniej napisalem /{\$([a-zA-Z0-9]+)}/ tez dziala w ''.

Pozdrawiam, narazie.
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.