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
Gruß hergy
Du hast das Dolarzeichen vor der variablen pos1 vergessen bei
$end=$pos2-$pos1Gruß 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:
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
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:
die Funktion heißt
und nicht
("i" vergessen)
hergy
$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:
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
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 ;-)
Das ich das nicht gesehen hab :-(?
$pos1= strpos($artikel_text, "</fn>")+4;
//Rest hierziwschen wie oben
$artikel_text = substr($artikel_text, $pos2+4);
Das ich das nicht gesehen hab :-(?

