Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Wyciąganie tekstu bez znacznika img
Forum PHP.pl > Forum > Przedszkole
szczabik
Witam mam taką zmienną

  1. <?php
  2. $tresc = '<a href='http://www.energetykrow.rybnik.pl/foto/pilkarze-09-10/Widawski-wywiad1.jpg' target=_blank><img src='http://www.energetykrow.rybnik.pl/images/news_cats/Widawski_news2.jpg' style='margin-left:5px' align='right'></a>W dziale <a href='viewpage.php?page_id=59' target='_blank'><b>Wywiady</b></a> pojawiła się rozmowa z nowym trenerem piłkarzy ROW Rybnik - <b>Dariuszem Widawskim</b>. Opowiada on w niej między innymi o swojej dotychczasowej karierze piłkarskiej i trenerskiej oraz mówi dlaczego przyjął propozycję poprowadzenia naszej drużyny.<br>
  3. Zapraszamy do lektury!';
  4. ?>




Jak mogę wyciągnąć ze zmiennej cały tekst ale bez znacznika <a href czyli bez

Kod
<a href=\'http://www.energetykrow.rybnik.pl/foto/pilkarze-09-10/Widawski-wywiad1.jpg\' target=_blank><img src=\'http://www.energetykrow.rybnik.pl/images/news_cats/Widawski_news2.jpg\' style=\'margin-left:5px\' align=\'right\'></a>



Chodzi o wyświetlanie samego tekstu bez odnośnika obrazkowego który jest na początku.



Wiem że mogę użyć ale nie wiem jak napisać takie wyrażanie regularne może ktoś mi pomóc ?
Swirek
  1. <?php
  2. $od ='<a';
  3. $do = '</a>';
  4. $trescprzerobiona = preg_replace("#$od(.*)$do#",' ', $tresc);
  5. ?>


może tak? ale nie jestem pewny 100% czy zadziała
edit:

sprawdziłem działa ale kasuje do 2 linku smile.gif
możesz poprostu dodać spacje przed pierwszym zamknięciem linku </a> i zmienną $do przypisać
  1. <?php
  2. $do = ' </a>';
  3. ?>


choć zdaje sobie sprawe, że to troche może nie ciekawe rozwiązanie bo gdy pojawi się w treści dalszej </a> z spacją przed to zetnie do tego punktu.
ale idea myśle, że właściwa jak najbardziej smile.gif
szczabik
A jak mogę wyciągnąć sam tekst z takiego Stinga
  1. <?php
  2. $tekst = "test test <img src='test.gif' alt='' /> test test";
  3. ?>

I napisałem taki kawałek wyrażenia
<img src=(.*?)>
ale jak mam to dodać co całego wyrażenia czyli wszystko co zaczyna się od <img i kończy > nie pokazywało

Z tego co mi wiadome to preg_replace" title="Zobacz w manualu PHP" target="_manual złoży do odnajdywania ciągu paskującego do wyrażenia i zamiany na podany Czyli raczej to opada bo chce wyświetlić wszystko ale bez img i wydaje mi się że musiał bym użyć preg_match" title="Zobacz w manualu PHP" target="_manual ?
Swirek
czyli jeśli dobrze zrozumiałem chodzi Ci o wywalenie wszystkich obrazków z tekstu?
szczabik
Tak właśnie o to mi chodzi tylko problem w tym że obrazki mogą być tak

<img src='test.gif' alt='' />

lub odnośniki jako obrazek czyli

<a href="test.htm"><img src="test.gif" alt="" border="0" /></a>


I jak takie wyrażenie napisać ?
szczabik
To raczej odpada już wcześniej to rozważałem ale tekst mam w bazie i zagadują się tam oprócz img znaczniki <b><u><i> itp. Którą muszą zostać i chce tylko wywalić obrazki.
Swirek
jeśli dobrze zrozumiałem to nie powinno w niczym przeszkadzać

  1. <?php
  2. strip_tags($text, '<u><i><b>');
  3. ?>
szczabik
Nie raczej nie ja potrzebuje wyrażenie regularne.

Takim wyrażeniem pobieram wszystko
(.*)
Ale jak dodać do tego by pobierało wszystko bez
<img src=(.*?)>

Może ktoś pomóc

?
sowiq
~Swirek podał Ci bardzo dobre rozwiązanie. Nie wiem czemu nie chcesz z niego skorzystać. Chociaż z drugiej strony strip_tags też na wyrażeniach regularnych działa, więc wszystko jedno.

Spróbuj tak:
  1. <?php
  2. $tresc = preg_replace('/(<img.*?>)/i', '', $tresc);
  3. // wer 2
  4. $tresc = preg_replace('/(<img[^>]*>)/i', '', $tresc);
  5.  
  6. // sprawdź które będzie szybsze w działaniu i napisz
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.