Fred Furunkelstein: PHP Variable auseinander nehmen

Beitrag lesen

Hallo,

Ich habe eine Variable in der sich ein längerer html code befindet aus diesen möchte ich einen bestimten teil auslesen und in einer weiteren variable speichern wie bekomm ich das hin?

Es gibt da viele Methoden. Wie wäre es mit einem regulären Ausdruck oder dem Umwandeln in ein Array mit explode?

Das mit dem Hilfsarray erklär ich Dir als Erstes:

$str='Der &quot;Standdardtext für der Ausgaben in erste Programmen lautet:<div class="test">Hallo Welt!&nbsp;Wie geht es Dir?</div>';

Du willst das am ersten '<div class="test">' cracken:
$T1='<div class="test">';
Und dann am '&nbsp;'
$T2='&nbsp';

Der Befehl heißt explode.

$ar=explode($T1, $str, 2);

Im ersten Element $ar[0] steht alles bis $T1, also bis '<div class="test">', also 'Der &quot;Standdardtext für der Ausgaben in erste Programmen lautet:'. Das brauchst Du nicht.

Aber den zweiten Teil, in $ar[1] steht jetzt: 'Hallo Welt!&nbsp;Wie geht es Dir?</div>';

Das cracken wir also noch mal:

$ar=explode($T2, $ar[1], 2);

Jetzt steht in $ar[0] 'Hallo Welt!' und in $ar[1] steht: 'Wie geht es Dir?</div>';

Du wolltest $ar[0]. Geliefert!

Die zweite Lösung mit einem regulärem Ausdruck ist natürlich "die  ultimative Profilösung" und enorm leistungsfähig, hier wäre die Funktion preg_match Kandidat der Wahl. Die verursacht aber einen hohen Lernaufwand. Ich zeige es:

Das kennst Du schon:
$str='Der &quot;Standdardtext für der Ausgaben in erste Programmen lautet:<div class="test">Hallo Welt!&nbsp;Wie geht es Dir?</div>';

Jetzt brauchst Du einen regulären Ausdruck für ein Suchmuster:

$muster='/<div class="test">(.*)&nbsp;/';

Feuer Frei!

preg_match ( $muster, $str, $treffer );  
print_r($treffer); oder print $treffer[1];
~~~ oder noch besser:  
  
  
~~~php
if (preg_match ( $muster, $str, $treffer )) { # Nur wenn was gefunden wurde  
   [link:http://php.net/manual/de/function.array-shift.php@title=array_shift]($treffer); # Wegwerfen des ersten Array-Elements  
   [link:http://php.net/manual/de/control-structures.foreach.php@title=foreach] ($treffer as $ausgabe) {  
        print $ausgabe."<br />\n"; Ausgabe aller Treffer  
   }  
}

Wenn Du Lösung 2 noch nicht "schnallst", dann mach Dir erst mal keine Sorgen. Das kommt noch und so wie deine Frage gestellt ist brauchst Du es noch nicht unbedingt.

Fred