Antworten auf deine Fragen:
Neues Thema erstellen

php substr liefert keine Rückgabe

rilight

Noch nicht viel geschrieben

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.
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
 

Duddle

Posting-Frequenz: 14µHz

Wie so oft liegt die Lösung im Betrachten des erzeugten Quelltextes, um den geht es ja. Dieser spuckt für deinen Code folgendes aus:
HTML:
function = test()<br>[<]<br>[<!Doc]<br>[<!Doc]<br>
Und was macht ein Browser mit einem öffnenden "<"? Er versucht es als Tag zu interpretieren. Das erste <br> ist noch okay, die restlichen "Tags" werden nicht erkannt und unsichtbar dargestellt.


Duddle
 

Talirion

People Fotograf

PSD Beta Team
schon mal probiert was passiert wenn du aus deinem String
<!Doctype HTML> entfernst? im moment kann ich nicht genau sehen welchen Wert Input hat bzw. wie du diesen Zuweist .... seltsam ebenfalls das eine Zeile komplett fehlt.

kannst du statt jeder zeilen einen echo auch mal so versuchen:
PHP:
function test( $input )
{
$tmp =  'function = test()'.'<br>' ;
$tmp +=   '['.substr( $input , 0, 1 ).']'.'<br>' ;
$tmp +=  '['.substr( $input , 0, 5 ).']'.'<br>');
$tmp +=   '['.mb_substr( utf8_decode( $input ), 0, 5, 'UTF-8' ).']'.'<br>');
echo $tmp;
}

LG & Viel Glück

@Duddle stimmt daran hatte ich gar nicht gedacht :)
 

rilight

Noch nicht viel geschrieben

Guten Morgen!

@Duddle: Danke, das war es. Ich glaube Nachts um 2 ist es einfach zu spät um noch klar zu denken.

@Talirion: Der Input ist der Quellcode von dem HTML Dokument.

@Moderator: Thema ist gelöst und kann geschlossen werden =)

Vielen vielen Dank für eure schnelle Hilfe! **Daumen hoch**
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.565
Beiträge
1.538.067
Mitglieder
67.488
Neuestes Mitglied
Andrew56524
Oben