Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] wyrażenie regularne
Forum PHP.pl > Forum > Przedszkole
ggg
Potrzebuje stworzyć wyrażenie regularne, które pozwoli mi zamienić następujące fragmenty tekstu pobrane z formularza:

  1. <a href="../cos/asd"></a>
  2. <img src="../innecos/zcz" />


na takie bez kropek ..

  1. <a href="/cos/asd"></a>
  2. <img src="/innecos/zcz" />


Istotne jest aby było to robione tylko w tych 2 tagach html jak wyżej.

Zrobiłem to na razie tak:

  1. <?php
  2. $content = str_replace('<a href=\"..', '<a href=\"', $content);
  3. $content = str_replace('<img src=\"..', '<img src=\"', $content);
  4. ?>


Ale to rozwiązanie się nie sprawdza jeśli cokolwiek pojawi mi się między '<a' i 'href=\"..' i odpowiednio '<img' i 'src=\"..' Czy może mi ktoś pomóc z wyrażenie regularnym, które zrobi mi odpowiedni replejs?
ggg
Cytat(MWL @ 4.10.2008, 15:13:55 ) *

Dzięki. Już wczoraj znalazłem ten tutek, przeczytałem cały i dalej wymiękam...
MWL
Połącz fakty i daj mi plusika tongue.gif
ggg
Cytat(MWL @ 4.10.2008, 16:40:25 ) *
Połącz fakty i daj mi plusika tongue.gif

Dobre sobie. Już próbowałem nim założyłem ten post i mi to nie wychodziło. Nie wydaje Ci się, że jakby mi się udało "połączyć fakty" to bym nie prosił o pomoc na forum??
Pomoże ktoś?
kwiateusz
  1. <?php
  2. $link1 = preg_replace('/(<a.*href=")..(.*">)/i','$1$2','<a rel="nofollow" href="../cos/asd">');
  3. $link2 = preg_replace('/(<img.*src=")..(.*" />)/i','$1$2','<img title="" src="/innecos/zcz" />');
  4. ?>
ggg
Kwiateuszu, a jak zrobić aby to działało, gdy w tekście jest więcej niż jeden tag a?

  1. <a rel="nofollow" href="../cos/asd"><a rel="nofollow" href="../cos/asd"><a rel="nofollow" href="../cos/asd">
oscar17
kurcze coś mi się usunęło,
możesz zrobić tak:
  1. <?php
  2. $link1 = str_replace('href="..', 'href="', $link1);
  3. ?>

nic poza a nie ma chyba atrybutu href?
ggg
Z str_replace nie da rady, bo może mi pozmieniać za dużo.
oscar17
Cytat(ggg @ 4.10.2008, 21:33:59 ) *
Kwiateuszu, a jak zrobić aby to działało, gdy w tekście jest więcej niż jeden tag a?

może coś takiego tam podziała:
  1. <?php
  2. $link1 = '<a rel="nofollow" href="../cos/asd"><a rel="nofollow" href="../cos/asd"><a rel="nofollow" href="../cos/asd">';
  3. $link1 = preg_replace('/(<a.*?href=")..(.*?">)/i','$1$2',$link1);
  4. ?>
ggg
Był problem z leniwością i zachłannością kwantyfikatorów. Podłubałem i zmajstrowałem coś takiego:

  1. <?php
  2. $link1 = preg_replace('/(<a.*?href=")..(.*?")(.*?>)/i','$1$2$3','<a rel="nofollow" href="../cos/asd" cos_tu_jest><a rel="nofollow" href="../cos/asd">');
  3. ?>


I teraz działa jak chciałem!!
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.