Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Usuniecie linku preg_replace
Forum PHP.pl > Forum > PHP
quality
Probuje usunac link ze zdjecia ale cos sie nie udaje.
Sposobem podanym ponizej co prawda usuwa link ale razem z linkiem usuwa sie caly <img />.

jak to dobrze zrobić ?

  1. <?php
  2. $html2 = '
  3. <a href="#"><img src="cos.jpg" border="0" align="left" />test</a>Dalszy tekst.
  4. ';
  5.  
  6. $pattern = '/<a(.*)>(.*)</a>/';
  7. $replacement = '${2}';
  8.  
  9. $html = preg_replace($pattern, $replacement, $html);
  10. ?>
Shili
Zwróć uwagę, co każesz zamieniać. Jeśli to pomyłka przy kopiowaniu, to ok.

Samo wyrażenie powinno wyglądać tak
Kod
$pattern = '/<a(.*?)>(.*)<\/a>/';


I poczytaj o wyrażeniach zachłannych winksmiley.jpg
quality
To poprzednie to byla pomylka przy kopiowaniu smile.gif

No rzeczywiscie ten przykad co podales działa na tym linku, ale ponizszy kod już nie.
Troche sa zamieszane te wyrażenia regularne :/

  1. <?php
  2. $html3 = '
  3. <a onclick="window.open('/mambots/editors/tinymce/jscripts/tiny_mce/plugins/ibrowser/scripts/popup.php?url=/images/stories/artykuly/3256d.jpg&clTxt=Kliknij w obraz aby zamknąćć okno','Image''width=500, height=300, scrollbars=no, toolbar=no, location=no, status=no, resiza
    ble=yes, screenX=100, screenY=100'); return false;" title="1" href="javascript:void(0)">
  4. <img width="200" height="132" border="0" align="left" title="" alt="" src="/images/stories/artykuly/3256.jpg"/>
  5. </a>
  6. ';
  7. $pattern = '/<a(.*?)>(.*)</a>/';
  8. $replacement = '${2}';
  9.  
  10. $html = preg_replace($pattern, $replacement, $html3);
  11. ?>


Juz wiem trzeba uwzglednic jeszcze znaki nowej lini, ale jak ?
Podmienilem te spacje i znaki nowej lini ale nadal cos jest nie tak:

  1. <?php
  2. $pattern = '/<a(.*?)>(s*)(.*)(s*)</a>/';
  3. $replacement = '${3}';
  4. ?>


Teraz działa ładnie ale podmienia mi tylko pierwszy link z kodu. Co zrobic ? smile.gif
Shili
Pierwszy? Możesz podać przykład tego kodu? U mnie podmienia wszystkie.
pyro
ustaw czwarty, opcjonalny parametr na -1 (nieskonczonosc)
quality
Kod jest długi, ale wkleje go. Nie mam pojecia jak sobie z tym poradzic.


  1. <?php
  2. $html3 = '
  3. <a href="javascript:void(0)" title="1" onclick="window.open('/mambots/editors/tinymce/jscripts/tiny_mce/plugins/ibrowser/scripts/popup.php?url=/images/stories/artykuly/3257d.jpg&amp;clTxt=Kliknij w obraz aby zamkn&#261;ćć okno','Image', 'width=500, height=300, scrollbars=no, toolbar=no, location=no, status=no, resiza
    ble=yes, screenX=100, screenY=100'); return false;"><img src="/images/stories/artykuly/3257.jpg" border="0" alt="Salon" title="Salon" width="249" height="175" align="left" /></a><a href="javascript:void(0)" title="1" onclick="window.open('/mambots/editors/tinymce/jscripts/tiny_mce/plugins/ibrowser/scripts/popup.php?url=/images/stories/artykuly/3258d.jpg&amp;clTxt=Kliknij w obraz aby zamknąćć okno','Image', 'width=500, height=300, scrollbars=no, toolbar=no, location=no, status=no, resiza
    ble=yes, screenX=100, screenY=100'); return false;"><img src="/images/stories/artykuly/3258.jpg" border="0" alt="Salon" title="Salon" width="249" height="175" align="left" /></a> 
  4. ';
  5. $pattern = '/<a(.*?)>(s*)(.*)(s*)</a>/;
  6. $replacement = ${3};
  7.  
  8. $html = preg_replace($pattern, $replacement, $html3);
  9. //echo htmlentities($html);
  10. echo $html;
  11. ?>


Pyro - nie działa ten czwarty parametr, chyba ze zle go wstawiam:
  1. <?php
  2. $html = preg_replace($pattern, $replacement, $html3,-1);
  3. ?>


Jak wezme dam znak nowej lini po pierwszym linku to dziala dobrze.
Jak to zapisać ? Czy (\s*) to nie jest 0 lub wiecej powtorzen ?

Zauwazylem jeszcze ze skrypt usuwa tylko pierwsze <a href=""> z poerwszego linku i </a> z ostatniego linku w kodzie; co jest grane ?
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.