Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Problem z wyrażeniem regularnym i preg_match()
-Kiszczak-
post 7.05.2012, 23:48:17
Post #1





Goście







  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??
Go to the top of the page
+Quote Post
Fifi209
post 8.05.2012, 00:04:11
Post #2





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Zrobić
print_r
na tablicy która Cię interesuje, będziesz wiedział o który indeks chodzi.


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
-Kiszczak-
post 8.05.2012, 00:11:52
Post #3





Goście







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 ?
Go to the top of the page
+Quote Post
Sephirus
post 8.05.2012, 07:25:50
Post #4





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


  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

Ten post edytował Sephirus 8.05.2012, 07:27:24


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 17:48