Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: znowu regex
Forum PHP.pl > Forum > PHP
yeti
No i znowu męczą mnie regularne. Po lekturze tutków bendiego wszystko było już jasne, ale niestety, znowu mam zgryz.

Mam wyrażenie:
  1. <?php
  2.  
  3. $comment = '<!-- komentarz -->';
  4. $k = 1;
  5.  
  6. ?>

Nie mam pojęcia dlaczego, ale wynik operacji:
  1. <?php
  2.  
  3. $marker = preg_replace('%<!--.(.*).-->%', '<!-- $1'.$k.' -->', $comment);
  4.  
  5. ?>

zamiast wyglądać:
  1. <!-- komentarz1 -->

wygląda tak:
  1. <!-- -->

Jeżeli po wyrażeniu $1 dam jakikolwiek znak (może być i spacja) a dopiero potem dołączę zmienną k wszystko jest ok (znaczy nie tak jak potrzebuję, ale przynajmniej coś się dzieje):
  1. <?php
  2.  
  3. $marker = preg_replace('%<!--.(.*).-->%', '<!-- $1 '.$k.' -->', $comment);
  4.  
  5. ?>

i dostajemy:
  1. <!-- komentarz 1 -->


Niestety jak dla mnie to nie jest dobre sad.gif
Czy może mi ktoś podpowiedzieć co robię nie tak?


*************************************************************
No i po kłopocie, poprawna składnia:
  1. <?php
  2.  
  3. $marker = preg_replace('%<!--.(.*).-->%', '<!-- ${1}'.$k.' -->', $comment);
  4.  
  5. ?>

ehh te literały ;p
bendi
Polecam dodac non-greedy, bo jak bedziesz mial wiecej tych komentarzy to rezultaty beda dosc niespodziewane
  1. <?php
  2.  
  3. $marker = preg_replace('%<!--.(.*?).-->%', '<!-- ${1}'.$k.' -->', $comment);
  4.  
  5. ?>
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.