Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Wyrażenie regularne szukające <a href="..
Forum PHP.pl > Forum > Przedszkole
sadistic_son
Witajcie,

Załóżmy, że mam taką zmienną:
  1. $text='sielalala to jest zdanie <a target="_BLANK" href="wp.pl" >WuPe</a> i ciąg dalszy sialalala';
Nidgy nie miałem okazji nauczyć się porządnie wyrażeń regularnych, więc pomóżcie ułożyć takie które ze zmiennej $text wyrzuci do dwóch zmiennych wp.pl oraz WuPe.

Dzięki!
session
  1. $input='sielalala to jest zdanie <a target="_BLANK" href="wp.pl" >WuPe</a> i ciąg dalszy sialalala';
  2. preg_match("/<a .*href=\"([a-zA-Z0-9\.\-_]*)\".*>(.*)<\/a>/", $input, $output);
  3. $href=$output[1];
  4. $a=$output[2];


Możesz też korzystać z DOM co będzie bardziej wydajne.
redeemer
Generalnie wyrażenia regularne nie nadają się do parsowania HTML, XML itd. Przykład z użyciem DOMDocument i DOMXpath.
  1. $html='sielalala to jest zdanie <a target="_BLANK" href="wp.pl" >WuPe</a> i ciąg dalszy sialalala';
  2.  
  3. $doc = new DOMDocument();
  4. $doc->loadHTML($html);
  5. $xpath = new DOMXpath($doc);
  6.  
  7. $elements = $xpath->query("//a[@target='_BLANK']"); // xpath query
  8.  
  9. foreach($elements as $element) {
  10. $href = $element->getAttribute('href');
  11. $innerHTML = get_inner_html($element);
  12.  
  13. echo $href.' '.$innerHTML.PHP_EOL;
  14. }
  15.  
  16. // funkcja pomocnicza
  17. function get_inner_html( $node ) {
  18. $innerHTML= '';
  19. $children = $node->childNodes;
  20. foreach ($children as $child) {
  21. $innerHTML .= $child->ownerDocument->saveXML( $child );
  22. }
  23.  
  24. return $innerHTML;
  25. }
sadistic_son
Dzięki Panowie. Co prawda nigdy o DOM nie słyszałem, ale chyba warto się tematem zainteresować smile.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.