Hallo liebes Forum!
Nachdem ich mir nun über 3 Stunden den Kopf zerbrochen habe und google und php.net leider auch keine Lösung parat hatten, hoffe ich, dass Ihr mir helfen könnt.
Innerhalb eines PHP Skriptes ( UTF-8 kodiert ) erstelle ich etwas HTML Quelltext.
Innerhalb einer Funktion wollte ich diesen Quelltext, oder allgemein gesprochen, den String bearbeiten. Dafür benutze ich die substr Funktion. Und hier ist auch schon das Problem : Die Rückgabe wird nicht angezeigt.
Die Funktion ...
... liefert als Ausgabe:
Ich kann mir nicht erklären, wieso von dem ausreichend langen String nur bei einer Substringlänge von 1 der korrekte Wert zurückgeliefert wird. Auch sehr merkwürdig ist, dass bei längeren Abschnitten die schließende eckige Klammer verschwindet.
Ein var_dump auf die Rückgabe liefert.
Testet man mittels ord( .. ) die 5 Stellen 0-4, die var_dump angibt, bekommt man die korrekten ASCII-Werte für den Quelltext.
Meine Vermutung liegt bei der Zeichenkodierung, jedoch hab ich auf stackoverflow und php.net nichts vergleichbares gefunden.
Ich hoffe auf eure Ideen.
Vielen Dank im Voraus.
rilight
Nachdem ich mir nun über 3 Stunden den Kopf zerbrochen habe und google und php.net leider auch keine Lösung parat hatten, hoffe ich, dass Ihr mir helfen könnt.
Innerhalb eines PHP Skriptes ( UTF-8 kodiert ) erstelle ich etwas HTML Quelltext.
HTML:
<!Doctype HTML><html><title>Eine Testseite</title><meta name="author" content="Paul Mueller"><meta name="description" content="Ein HTML5 Dokument"><meta name="keywords" content="HTML5, PHP, TEST"><meta charset="utf-8"><meta http-equiv="content-type" content="text/html; charset=utf-8"><h1>Überschrift</h1><p>Der erste Abschnitt.</p><p>Der zweite Abschnitt.</p><p>Der dritte Abschnitt.</p></html>
Innerhalb einer Funktion wollte ich diesen Quelltext, oder allgemein gesprochen, den String bearbeiten. Dafür benutze ich die substr Funktion. Und hier ist auch schon das Problem : Die Rückgabe wird nicht angezeigt.
Die Funktion ...
PHP:
function test( $input )
{
echo( 'function = test()'.'<br>' );
echo( '['.substr( $input , 0, 1 ).']'.'<br>' );
echo( '['.substr( $input , 0, 5 ).']'.'<br>' );
echo( '['.mb_substr( utf8_decode( $input ), 0, 5, 'UTF-8' ).']'.'<br>' );
}
... liefert als Ausgabe:
Code:
function = test()
[<]
[[[
Ich kann mir nicht erklären, wieso von dem ausreichend langen String nur bei einer Substringlänge von 1 der korrekte Wert zurückgeliefert wird. Auch sehr merkwürdig ist, dass bei längeren Abschnitten die schließende eckige Klammer verschwindet.
Ein var_dump auf die Rückgabe liefert.
Code:
string(5) "
Testet man mittels ord( .. ) die 5 Stellen 0-4, die var_dump angibt, bekommt man die korrekten ASCII-Werte für den Quelltext.
Meine Vermutung liegt bei der Zeichenkodierung, jedoch hab ich auf stackoverflow und php.net nichts vergleichbares gefunden.
Ich hoffe auf eure Ideen.
Vielen Dank im Voraus.
rilight