Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Problem z wyrażeniem regularnym i preg_match()
Forum PHP.pl > Forum > Przedszkole
Kiszczak
  1. $tager = '/<div class="tags">(.+?)<a class="tag" href="(.+?)">(.+?)<\/a>&#32(.+?)<\/div>/ims';
  2. preg_match_all($tager, $nazwa, $tager);
  3. echo $tag=$tager[0][$a];


Chciałbym wyciągnąć tylko to co jest między <div class="tags">(.+?)<a , czyli pierwsza zmienna (sam tekst), ale w wyniku
dostaje całość (z htmlem) czyli:
  1. <div class="tags">blablabla<a class="tag" href="blablabla">balbalbla<\/a>&#32blblablab<\/div>

Aby uzyskać tylko to co chcę muszę używać strip_tags, trim itp.

Jak pobrać zawartość która mnie interesuje bez tej całej 'otoczki' samym preg_match??
Fifi209
Zrobić
print_r
na tablicy która Cię interesuje, będziesz wiedział o który indeks chodzi.
Kiszczak
Z jakiegoś powodu nie ma indeksu, który zawierałby wybrany fragment jako sam tekst.
Są tylko linki, mimo iż przecież zaznaczyłem wyraźnie miejsce, który teks chciałbym pobrać
Pierwszy (.+?).
Co jest nie tak ?
Sephirus
  1. $tager = '/<div class="tags">(.+?)<a class="tag" href="(.+?)">(.+?)<\/a>&#32(.+?)<\/div>/ims';
  2. preg_match_all($tager, $nazwa, $tager);
  3. echo $tag=$tager[1][0];


i ogólniej jak już robisz coś takiego to nie koniecznie musisz używać "?" aby osiągnąć ungreedy - czyli niezachłanne wyrażenie. Wystarczy w twoim przypadku zamiast:

Kod
(.+?)

dać:

([^<]+)


wink.gif
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.