PHP: IMG Tag Parameter auslesen

learnLinux

New Member
Hallo,

ich habe bespielsweise folgenden IMG Tag:

<img alt="test" src="/images/aussen.jpg" style="width: 200px; height: 133px; float: right; border-width: 0px; border-style: solid;" />

Ich möchte nun eigentlich alle Daten erhalten:

array{
alt => test,
src => '/images/aussen.jpg'
height => 133px
width => 200px,
float => right,
.....
}

Wobei zu beachten ist das das IMG Tag auch so aussehen kann:
<img alt="test" src="/images/aussen.jpg" width="200px" height="133px"

Wie setze ich dies am besten um?
Code:
			$img_data = array();
			preg_match_all("/.*?(<img[^>]++>)/si", $cont, $imgtags);
			foreach ($imgtags[1] AS $tmp_tags) {

				preg_match('/<img.*src="(.+)"/isU', $tmp_tags, $src_matches);
				preg_match('/<img.*width:(.+);/isU', $tmp_tags, $width_matches);
				preg_match('/<img.*height:(.+);/isU', $tmp_tags, $height_matches);
				
				if (!isset($width_matches[1])) {
					$width_matches[1] = NULL;
				}
				if (!isset($height_matches[1])) {
					$height_matches[1] = NULL;
				}
				if (!isset($src_matches[1])) {
					$src_matches[1] = NULL;
				}
				$img_data[] = array(
									'width' => trim($width_matches[1]),
									'height' => trim($height_matches[1]),
									'src' => trim($src_matches[1])
								  );
			}
			echo "<pre>";
			print_r($img_data);

Wie mach ich das ganze besser?
 
Last edited by a moderator:
Hi,

das hier könnte dir eventuell weiterhelfen:

PHP:
<?php

// HTML/XML Tag Attribute ermitteln
function get_tag_attributes($code, $tag_search = false) {
  // Einzelnen Tagnamen in ein Array packen
  if ($tag_search && !is_array($tag_search)) {
    $tag_search = array($tag_search);
  }

  // Alle Tags auslesen
  $matches = array();
  preg_match_all('/<([a-z]*?) (.*?)\>/is', $code, $matches);

  // Funde durchlaufen und Attribute ermitteln
  $tags = array();
  foreach ($matches[1] as $key => $tag_name) {
    // Nicht zugelassene Tags überspringen
    if ($tag_search) {
      if (!in_array(strtolower($tag_name), $tag_search)) {
        continue;
      }
    }

    // Attribute austrennen
    $attributes = array();
    preg_match_all('/([a-z]*?)=(".*?"|\'.*?\')/is',
      $matches[2][$key], $attributes);

    // Attribute abspeichern
    $tag = array('tag' => $tag_name);
    foreach ($attributes[1] as $key => $value) {
      $tag[$value] = substr($attributes[2][$key], 1, -1);
    }
    $tags[] = $tag;
  }

  // Daten zurückgeben
  return $tags;
}

?>
Quelle: http://andreas.droesch.de/2009/09/php-html-xml-tag-attribute-ermitteln/

Aufrufen kannst du es über:

PHP:
<?php

$string = <<< HTML_CODE

<img alt="test" src="/images/aussen.jpg" style="width: 200px; height: 133px; float: right; border-width: 0px; border-style: solid;" />  

HTML_CODE;

$tags = get_tag_attributes($string, 'img');

echo '<pre>'; print_r($tags); echo '</pre>'; 

?>

Mit freundlichen Grüßen,
 
Back
Top