[php]zamienianie znakow w ciagu + wyr. regularne

0

witam
mam taki ciag:

$tekst = '<b>cos</b><!--zjadlo--><b>mojego chomika</b>  

i teraz pytanie, jak wyrzucic komentarze i pozostawic sam tekst 'zjadlo' ?
probowalem czegos w tym stylu, za pomoca wyrazen regularnych:

$zmieniony=ereg_replace('^\<\!\-\-(a-z)+\-\-\>$', 'zjadlo', $tekst);

ale to nie idzie :/
jakies pomysly ?

0
kubARek napisał(a)

witam
mam taki ciag:

$tekst = '<b>cos</b><!--zjadlo--><b>mojego chomika</b>  

i teraz pytanie, jak wyrzucic komentarze i pozostawic sam tekst 'zjadlo' ?
probowalem czegos w tym stylu, za pomoca wyrazen regularnych:

$zmieniony=ereg_replace('^\<\!\-\-(a-z)+\-\-\>$', 'zjadlo', $tekst);

ale to nie idzie :/

jakies pomysly ?

ta, bardzo uniwersalne wyrażenie, ma zostać:

a) zjadlo

b) <b>cos</b>zjadlo<b>mojego chomika</b>

c) <b>cos</b><b>mojego chomika</b>
0

ma zostac podpunkt b), czyli obciac same komentarze ()
a co do wyrazenia, to jest takie, bo sie nie znam na tym za bardzo...

0
  1. Skąd w tym wyrażeniu to < i > ?
  2. Chyba nie powinno być ^ i $ w tym wyrażeniu - powoduje, że musiałby być tylko sam komentarz.
0

Wywala komentarze a pozostawia wszystko między nimi:

$zmieniony = preg_replace('\<\!\-\-(.*)\-\-\>', '\1', $tekst);

ale lepiej zrobić - szybsza operacja (bo RegEx'py są niepotrzebne):

$zmieniony = str_replace(array('<!--', '-->'), array('', ''), $tekst);

OT:
Odnoście < i > to wina skryptu GeSHi albo nipotrzebne uzycie funkcji htmlentities/htmlspecialchars w plikach 4p

0

bardzo dziekuje za odpowiedz :)

0

lepiej chyba:

preg_replace('', '\1', $tekst);

(jeśli każde otwarcie komentarza musi być w parze z zamykającym żeby zignorować, albo drugi przypadek - a te kody nie likwidują komentarzy bo wtedy by wyszedł wariant C z drugiego posta, tylko ignorują znaczniki otwarcia i zamknięcia komentarza, w przykładzie w str_replace nie trzeba tworzyć tej drugiej tablicy Array(, ) - wystarczy ''

1 użytkowników online, w tym zalogowanych: 0, gości: 1