Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [regExpr] Niby wszystko dobrze...
Forum PHP.pl > Forum > PHP
Spirit86
Witam.

Napisałem wyrażenie, które ma na celu skasowanie wszystkiego co zawiera się między <!--ShowHide--> oraz <!--EndShowHide-->:

  1. <?php
  2.   $ret = preg_replace( "#<!--ShowHide-->(.+?)<!--EndShowHide-->#", "" , $ret);
  3. ?>


Niestety nie działa one na np. takim stringu:

Kod
<!--ShowHide--><a href="#" OnClick="ShowHide('tt5o'); return false;"><img src="Templates/CSS/images/hide.gif" border="0" />asdasd </a>
 <table cellpadding="0" cellspacing="0" id="tt5o" style="display: none; " ><tr><td width="10"></td><td>asdasd</td></tr></table><!--EndShowHide-->


Ech, czy ktoś może mi powiedzieć, jaki błąd popełniłem?
bendi
Ta, dodałeś znaki nowej linii a kropka domyślnie kończy działanie właśnie na nich, trzeba dodać modyfikator \s, wszystko opisałem już dawno temu http://bedkowski.pl/php_regex/1/ i dalsze
Spirit86
ech, próbowałem czegoś takiego już też:

  1. <?php
  2. $ret = preg_replace( "#<!--ShowHide-->(/(.*?)/s)<!--EndShowHide-->#", "" , $ret);
  3. ?>


zły kod wkleiłem. Ale to też nie działa.

nigdy chyba nie opanuje tych regExpr. czytałem już kilka tutoriali i zawsze się coś chrzani.
bendi
Cytat(Spirit86 @ 2006-04-05 20:27:50)
zły kod wkleiłem. Ale to też nie działa.

Bo ten wcale nie jest lepszy tongue.gif

Wyrażenie regularne to cały string, natomiast ty próbójesz je gdzieś w środku zastosować i dlatego to nie działa, tak powinno być lepiej.
  1. <?php
  2. $ret = preg_replace( "#<!--ShowHide-->(.*?)<!--EndShowHide-->#s", "" , $ret);
  3. ?>
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.