Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

Teile eines Strings auslesen





Frage

Hallo! Ich habe ein String und möchte gewisse Inhalte dieses Strings ausgeben lassen. Dabei stehen die relevanten Inhalte des Strings zwischen den Tags "<fn>" und "</fn>". Irgendwie schein ich ein Problem damit zu haben. Hier erst mal mein bisheriger Code. [code] $artikel_text = $artikel[´inhalt´]; $pos1 = strpos ($artikel_text, "<fn>"); $pos2 = strpos ($artikel_text, "</fn>"); $end=$pos2-pos1; $inhalt= substr($artikel_text, $pos1, $end); [/code] Bei der Ausgabe erhalte ich als Beispiel folgendes: [code] echo "Pos1=".$pos1."<br>"; //Ausgabe 3341 echo "Pos2=".$pos2."<br>"; ////Ausgabe 3412 echo "End=".$end."<br>"; //Ausgabe 3412 [/code] Irgendwas scheint also mit meiner Varibalen $end nicht zu stimmen??? Denn so wie es im Moment ist, bekomme ich ab Position 3341 eine Ausgabe von 3412 Zeichen, statt wie gewollt (3412-3341=) 71 Zeichen. Eine Schleife muss ich irgendwie auch noch hinbekommen, dass er mir alle Inhalte zwischen "<fn>" und "</fn>" ausgibt und nicht nur den ersten. Nach ewigen probieren und suchen steh ich nun etwas auf dem Schlauch :-(. Wer weiß Rat?

Antwort 1 von Hergy

Hi

Du hast das Dolarzeichen vor der variablen pos1 vergessen bei
 $end=$pos2-$pos1


Gruß hergy

Antwort 2 von Ines

Oh man, stimmt. Manchmal sieht man das Einfachste nicht!

Hab versucht das in eine Schleife durchlaufen zu lassen, aber scheinbar stecken noch Fehler drin.

Hier mein jetziger Stand:

$artikel_text = $artikel[´inhalt´];

$count=substr_count($artikel_text, "<fn>");

$counter=1;
while ($counter<=$count)
{
	$pos1 = strpos ($artikel_text, "<fn>");
	$pos2 = strpos ($artikel_text, "</fn>");
	$end=$pos2-$pos1;	//Länge der Zeichenkette
	$fussnote = substr($artikel_text, $pos1, $end);
	echo "(".$counter.") ".$fussnote."<br>";
	$rest=strstr($artikel_text, "</fn>");
	$artikel_text = substr($rest, $pos2);
	$counter++;
}
 

Wenn die Schleife einmal durchlaufen ist, will ich mit dem restlichen String die Schleife solange durchlaufen, bis meine Suchstrings nicht mehr vorhanden sind. Ich bekomme das mit dem "Reststring" irgendwie nicht wirklich gut hin :-(.

Ines

Antwort 3 von Hergy

Flüchtigkeitsfehler:

 $rest=strstr($artikel_text, "</fn>");


die Funktion heißt
 stristr()


und nicht
 strstr()


("i" vergessen)

hergy

Antwort 4 von Hergy

Oh sorry, mein Fehler!

strstr und stristr ist das gleiche außer Groß- und Kleinschreibung :-))

versuch mal das hier:

while ($counter<=$count) 
{ 
   $pos1 = strpos ($artikel_text, "<fn>"); 
   $pos2 = strpos ($artikel_text, "</fn>"); 
   $end=$pos2-$pos1;   //Länge der Zeichenkette 
   $fussnote = substr($artikel_text, $pos1, $end); 
   echo "(".$counter.") ".$fussnote."<br>"; 
Zitat: $artikel_text = strstr($artikel_text, "</fn>");
$counter++; }


weil:
$artikel_text muß ja am Ende der Schleife den reststring enthalten, welchen er im nächsten Schleifendurchlauf benötigt ! oder sehe ich das falsch?

hergy

Antwort 5 von Ines

Nein, das war auch nicht die Lösung. Ich habe sie aber gerade gefunden ;-)
 
$pos1= strpos($artikel_text, "</fn>")+4; 

//Rest hierziwschen wie oben

$artikel_text = substr($artikel_text, $pos2+4); 


Das ich das nicht gesehen hab :-(?

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: