Warum zeigt meine php substr () obskure Zeichen beim Ausschneiden eines Textes?

8

Ich verwende die Funktion substr() , um die Zeichen in Strings zu begrenzen. aber manchmal enthält der Ausgabetext einige obskure Zeichen und Fragezeichen usw. ...

Der Text, der "substred" ist, ist bereits UTF8-codiert, und NICHT in HTML-Entities, um dieses Problem zu lösen.

Danke

    
Ryan 23.01.2010, 19:11
quelle

4 Antworten

30

Weil Sie Ihre Charaktere in zwei Hälften schneiden.

Verwenden Sie mb_substr für Multibyte-Zeichenkodierungen wie UTF-8. substr zählt nur Bytes, während mb_substr Zeichen zählt.

    
Gumbo 23.01.2010, 19:13
quelle
3

Der Grund ist, dass Sie UTF-8 verwenden, es ist Multibyte-Codierung und substr () funktioniert nur mit Singlebyte! htmlentities () spielt keine Rolle.

Sie sollten mb_substr () Ссылка verwenden und andere Multibyte-Funktionen

    
Dan 23.01.2010 19:15
quelle
0

Nur um das Gurmbo zu erweitern ist die Antwort. Mit mb_substr lösen Sie Ihr Problem, aber wenn Sonderzeichen am Ende der Reise erscheinen, werden immer noch einige Sonderzeichen angezeigt. Also, wenn ich etwas recherchiert habe, Wordpress mit der Methode wp_html_excerpt , um dieses Problem zu lösen.

Die Methode

wp_html_excerpt entfernt diese Sonderzeichen vom Ende der Zeile.

Hier ist der Quelltext von wordpress .

%Vor%     
Gowri 11.03.2016 07:39
quelle
0

Wenn Sie Probleme mit der Codierung haben, können Sie auch die Funktion html_entity_decode () anwenden, die alle HTML-Entitäten in die entsprechenden Zeichen konvertiert. Zum Beispiel:

%Vor%

Das sollte auch funktionieren.

    
rebduvid 03.04.2017 19:57
quelle

Tags und Links