Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wykluczenie <a>
Forum PHP.pl > Forum > PHP
my_kel
Witam
Laduje sobie do bazy ciag np:
Kod
Dawno dawno temu ten maly domek <a href="domek.jpg"><img src="domek.gif" border="0"></a> zamieszkiwala sobie baba jaga.

I teraz jak w wyszukiwarce szukam np ciagu "DOMEK" i chce pogrubic slowo w tekscie za pomoca:
  1. <?php
  2.  
  3. $info_glowna = ereg_replace($search,'<b>'.$search.'</b>',$info_glowna);
  4.  
  5. ?>

To sila rzeczy dodaje mi znaczniki rowniez do linku i sa bledy.

Jak usprawnic to, zeby pomijal mi znaczniki <a>??
Pozdr.
MS
iceman
  1. <?
  2.  
  3. $str = &#092;"Dawno dawno temu ten maly domek <a href='domek.jpg'><img src='domek.gif' border='0' /></a> zamieszkiwala sobie baba jaga.\";
  4. $search = &#092;"domek\";
  5. $search2 = &#092;"<b>\" . $search . \".jpg</b>\";
  6.  
  7. $str = ereg_replace($search,'<b>'.$search.'</b>', $str);
  8. $str = ereg_replace($search2, $search . '.jpg', $str);
  9. ?>


Zaproponowany sposób jest dość trywialny ale będzie działał dla obrazków .jpg smile.gif
crash
Ale dla wyrazu dom i grafiki w linku domek.jpg już nie zadziała.

Takie coś:
  1. <?php
  2. $t = 'Dawno dawno temu ten maly domek <a href=\"domek.jpg\"><img src=\"domek.gif\" border=\"0\"></a> zamieszkiwala sobie baba jaga.';
  3.  
  4. echo preg_replace( '/ (domek)( )?/is', ' <b>1</b>2', $t );
  5. ?>

Ale nie jest to zbyt zadowalająca metoda.
Major
Zawsze mozesz za pomoca preg_replace wywalić tagi a, img
sobstel
Cytat(Major @ 2005-07-08 12:40:44)
Zawsze mozesz za pomoca preg_replace wywalić tagi a, img

ale wtedy tekst bedzie co prawda pogrubiony, ale bez linków
bieniek
Jezeli interesuje cię tylko zeby wyszukiwał wyrazy zwykłego tekstu to propunuje np takie rozwiązanie
  1. <?php
  2. $text = &#092;"To jest sliczny domek <A href=\"domek.jpg\"><img src=\"domek.jpg\" ></img>\";
  3. $newText = preg_replace('/domek[^.]/', '<b> domek </b>', $text);
  4. ?>

Takie spostrzeżenie że pliki najczęściej mają kropkę w swojej nazwie (przynajmniej nie spotkałem jeszcze w tagu nazwy bez rozszeżenia)
Wave
a co w przypadku:
Kod
To jest domek.

questionmark.gif
bieniek
No przyznam, że nie pomyślałem (nie ma to jak kontrprzykład). Proponuje;
Kod
preg_replace('/domek[^\.]|domek(\.)([^A-Za-z])/', '<b> domek </b>\\1',$text);
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.