2012-05-23 6 views
6

Ich weiß nicht, warum auf kyrillische Schrift, Substring ersetzen einige Zeichen mit "?"PHP Teilstring und seltsames Symbol auf gerenderten HTML

My-Code

$string1 = get_the_content(); 
$string = strip_tags($string1); 
$stringcutted = substr($string,0,150); 
$replacement = "..."; 
$final = substr($stringcutted, 0, -3).$replacement; 

und schauen, wie es auf html

strange icon1 strange icon2

Jede Lösung gemacht wird?

Antwort

3

Da sind PHP-String-Funktionen auf Basis von Strings von Bytes; Sie haben keine Kenntnisse über die Zeichencodierung. Also in so etwas wie UTF-8, wo ein Zeichen mehr als ein Byte aufnehmen kann, es funktioniert nicht so, wie Sie es wünschen würden:

<?php 
$x = 'Подмосковные вечера'; 
print(strlen($x)."\n");  # 37, not 19 
print(substr($x,0,1)."\n"); # �, not П 
print(substr($x,0,2)."\n"); # П, not По 
?> 

Blick auf den multibyte string functions wenn Sie nicht manipulieren wollen -ASCII-Text.

0

Sie müssen die Zeichencodierung überprüfen. Im Grunde haben Sie eine Zeichenkette, die in einem Format codiert ist, und Sie haben es in einem anderen Format ausgegeben.

Für internationale Sachen (und es sieht aus wie Sie das tun), dann würde ich UTF-8: - In der HTML-Datei im Kopf hinzufügen (oben) - In Ihrer PHP, stellen Sie sicher, Behandle alle Zeichenketten als UTF-8 - Wenn du auch eine Datenbank hast, vergewissere dich, dass die Datenbank, die Tabellen und die Felder alle als UTF-8 konfiguriert sind (Warnung: diese Änderung kann Daten beschädigen, ohne Import/Export!). - Wenn Sie Vorlagendateien mit Sonderzeichen lesen, stellen Sie auch sicher, dass diese UTF-8 sind. (Wenn keine Sonderzeichen, dann normale AscII tun)

Das ist die einfache Antwort. Es gibt viel zu lesen über die Zeichenkodierung - einfach Google.

(Alternative Lösung, Verwendung ASCII, aber alles zu webfreundliche Zeichencodes konvertieren. Aber das ist kniffliger alles in Ordnung, die Codes zu bekommen, vor allem, wenn Umgang mit Benutzereingaben.)

Verwandte Themen