Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: wyrażenie regularne i negacja
Forum PHP.pl > Forum > PHP
maciu
Jest tekst połączony z tagami html. Z tego tekstu za pomocą wyrażeń regularnych chcę wyciągnąć wszystkie tagi img, a nastepnie tag zdjęcia podlinkować

jest
  1. fsdfsdsffff<img src="zdjecie.jpg" alt="" />dsdjfhsdjfshdskhsaklf

z tego ma wyjść
  1. <a href="zdjecie_big.jpg><img src="zdjecie.jpg" alt=""/></a>


robię to za pomocą takiego wyrażenia
  1. <?php
  2. preg_replace('/(<img.*src="(.+)(.jpg|.gif|.png)"{1}[^>]+>)/Ui', '<a href="$2_big$3">$1</a>', $text);
  3. ?>



teraz chciałbym to trochę zmodyfikować, aby nie pobierał zdjęć, które już są podlinkowane.

takim wyrażeniem pobieram zdjęcia które są podlinkowane
  1. <?php
  2. preg_replace('/<a.*href="(.+)"{1}[^>]+>(<img.*src="(.+)(.jpg|.gif|.png)"{1}[^>]+>)/Ui', '<a href="$3_big$4">$2</a>', $text);
  3. ?>


a chciałbym na odwrót, czyli żeby pobierał te zdjęcia, które nie są podlinkowane.
maniekl2
nie wiem czy dobrze zrozumiałem, ale może coś takiego:
  1. <?php
  2. if(!preg_replace('/<a.*href="(.+)"{1}[^>]+>(<img.*src="(.+)(.jpg|.gif|.png)"{1}[^>]+>)/Ui', '<a href="$3_big$4">$2</a>', $text)) {
  3. // jeżeli nie jest podlinkowane to wykonuje.
  4. }
  5. ?>
maciu
nie zrozumiałeś dobrze. Tak jak ty zrobiłeś to nie zwróci zdjęć niepodlinkowanych.
bim2
Pobierz te podlinkowane, tymczasowo usun je , pobierz reszte obrazków. smile.gif I tak masz niepodlinkowane.
maciu
udało mi się to rozwiązać. Podaje, może komuś się przyda
  1. <?php
  2. preg_replace('/([^<a.*href="(.+)"])>(<img.*src="(.+)(.jpg|.gif|.png)"{1}[^>]+>)/Ui', '<a href="$3_big$4">$2</a>', $text);
  3. ?>
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.