Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] wyciągnięcie danych z pierwszego znacznika SPAN
Forum PHP.pl > Forum > Przedszkole
-zenek-
Witam

Mam taki html:
  1. <div><span>aaa</span> <span>bbb</span> <span>ccc</span></div>
  2. <div><span>ddd</span> <span>eee</span> <span>fff</span></div>
  3. <div><span>ggg</span> <span>hhh</span> <span>iii</span></div>

mogę prosić o podpowiedź jakiego wyrażenia regularnego w kombinacji z preg_match_all użyć żeby wyciągnąć dane tylko z pierwszego znacznika span w każdym divie?

zenek
kamil4u
Trzeba zmienić zachłanność wyrażenia
  1. $test = '<div><span>aaa</span> <span>bbb</span> <span>ccc</span></div>
  2. <div><span>ddd</span> <span>eee</span> <span>fff</span></div>
  3. <div><span>ggg</span> <span>hhh</span> <span>iii</span></div>';
  4.  
  5. preg_match_all('#<div><span>(.*?)\</span>#',$test, $matches);
  6.  
  7. print_r($matches);
-zenek-
Cytat(kamil4u @ 11.09.2012, 12:23:03 ) *
Trzeba zmienić zachłanność wyrażenia
  1. $test = '<div><span>aaa</span> <span>bbb</span> <span>ccc</span></div>
  2. <div><span>ddd</span> <span>eee</span> <span>fff</span></div>
  3. <div><span>ggg</span> <span>hhh</span> <span>iii</span></div>';
  4.  
  5. preg_match_all('#<div><span>(.*?)\</span>#',$test, $matches);
  6.  
  7. print_r($matches);



Dziękuje, a jakbym chciał nie pierwszy tylko nty, np 2 span z diva?
viking
Poczytaj o XPath i http://php.net/manual/en/book.dom.php a nie regexpy do obsługi DOM.
kamil4u
Jak masz takie dane jakie masz to najłatwiej:
  1. $test = '<div><span>aaa</span> <span>bbb</span> <span>ccc</span></div>
  2. <div><span>ddd</span> <span>eee</span> <span>fff</span></div>
  3. <div><span>ggg</span> <span>hhh</span> <span>iii</span></div>';
  4.  
  5. $test = explode('<span>',$test);
  6. print_r($test);


A wyrażeniami to:
  1. $test = '<div><span>aaa</span> <span>bbb</span> <span>ccc</span></div>
  2. <div><span>ddd</span> <span>eee</span> <span>fff</span></div>
  3. <div><span>ggg</span> <span>hhh</span> <span>iii</span></div>';
  4.  
  5. preg_match_all('#<span>(.*?)\</span>#',$test, $matches);
  6.  
  7. print_r($matches);


I pętlą co np. trzeci element przejechać.

I wyrażaniami tylko drugie elementy:
  1. $test = '<div><span>aaa</span> <span>bbb</span> <span>ccc</span></div>
  2. <div><span>ddd</span> <span>eee</span> <span>fff</span></div>
  3. <div><span>ggg</span> <span>hhh</span> <span>iii</span></div>';
  4.  
  5. preg_match_all('#<div>(<span>.*?){2}(.*?)\</span>#',$test, $matches);
  6.  
  7. print_r($matches);
wNogachSpisz
[JAVASCRIPT] pobierz, plaintext
  1. var span = document.querySelector('div > span:nth-child(1)')
[JAVASCRIPT] pobierz, plaintext
kamil4u
@wNogachSpisz: Wszystko fajnie, ale:
- to jest JS, a mówimy o PHP
- nie zadziała to pod starszymi przeglądarkami
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.