Wyciąganie całego znacznika p z tekstu

Wyciąganie całego znacznika p z tekstu

Wątek przeniesiony 2014-10-07 12:49 z PHP przez dzek69.

AR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 119
0

Witam jak wyciągnąć wszystkie znaczniki (cały znacznik)

Kopiuj
<p id="moja" class="jaks"></p>

oczywiście id i class mogą być inne. Bardzo proszę o pomoc

freemp3
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Miechów
  • Postów: 284
0

SimpleXML + xpath

AR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 119
0

a za pomocą preg_match_all jakieś wyrażenie regularne

freemp3
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Miechów
  • Postów: 284
0

Spróbuj takim:
!<p(?:\s+[^>]+)?>(.*?)</p>!s

dzek69
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Rzeszów
1

html nie jest językiem regularnym, a więc wyrażenia regularne są do tego wysoko niezalecane (jedynie bardzo proste stringi można tym parsować!!!) - miej to na uwadze

AR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 119
0
freemp3 napisał(a):

Spróbuj takim:
!<p(?:\s+[^>]+)?>(.*?)</p>!s

Niestety nie działa

dzek69
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Rzeszów
0

/<p[^>]*>(.*?)<\/p>/

pisane z ręki, jak nic nie pomyliłem to zadziała

freemp3
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Miechów
  • Postów: 284
0

Pokaż kawałek html, na którym operujesz oraz wynik preg_match_all

AR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 119
0
Kopiuj
$b = '<span>sdadsa</span>
       <p id="moja" class="jaks"></p>
       <a href="#">jakiś tam link</a>
       <p id="twoja" class="klasa"></p>';

preg_match_all("/<p[^>]*>(.*?)<\/p>/", $b, $match);
echo '<pre>';
print_r($match);

i chciałbym mieć efekt że w tablicy kolejno są znaczniki p całe

dzek69
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Rzeszów
1

No przecież masz.

Kopiuj
Array
(
    [0] => Array
        (
            [0] => <p id="moja" class="jaks"></p>
            [1] => <p id="twoja" class="klasa"></p>
        )

    [1] => Array
        (
            [0] => 
            [1] => 
        )

)

Oczywiście tego nie widzisz, bo jak robisz print_r a w środku masz kod HTML to przecież przeglądarka go parsuje!
Zajrzyj w źródło strony albo zrób sobie np echo htmlspecialchars($match[0][0]); i sam zobacz

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.