PHP: Eine Zeichenkette groß schreiben, aber nicht die html-Entitäten darin?

8

Wie kann ich den Inhalt in einer Zeichenfolge in Großbuchstaben, aber nicht in die darin enthaltenen HTML-Entitäten umwandeln? Ist es möglich?

%Vor%

Ich möchte dies produzieren,

%Vor%

aber ich bekomme das mit strtoupper()

%Vor%     
laukok 21.01.2011, 12:33
quelle

4 Antworten

9

Ich weiß, dass Sie CSS in Ihren Tags nicht aufgelistet haben, aber die meiste Zeit ist es einfacher, dies der Clientseite zu überlassen (wenn Sie diese Zeichenfolge nur für die Browseranzeige vorgesehen haben).

Das Anwenden von CSS text-transform: uppercase; erledigt dies für Sie.

    
kapa 21.01.2011, 12:39
quelle
3

Nun, entfernen Sie die Entitäten und verwenden Sie einen Multi-Byte-Zeichensatz!

%Vor%

Geben Sie dann die Zeichenfolge aus. Es gibt keine Notwendigkeit für die meisten HTML-Entitäten, einfach die nativen Zeichen verwenden und die Ausgabe des Dokuments richtig einstellen.

Wenn Sie wirklich die Entitäten verwenden müssen, ist eine Regex in der richtigen Reihenfolge:

%Vor%

Beachten Sie, dass ich diese Regex nicht getestet habe, aber es sollte funktionieren, da nach Buchstaben gesucht wird, denen nicht unmittelbar ein ; -Zeichen folgt ...

    
ircmaxell 21.01.2011 12:41
quelle
1

Es ist besser, die Zeichenfolge zuerst in Großbuchstaben zu konvertieren, als das gewünschte Ergebnis zu dekodieren

%Vor%

Funktion Großbuchstaben strtoupper($var); Ausgabe wird

sein %Vor%

Funktion htmlEntities () $var=htmlEntities($var); OUTPUT:

%Vor%

Endgültige Codierung $var=html_entity_decode($var); Ausgabe:

DIESES IST TEST
NEUE ZEILE

Wenn zuerst htmlentities konvertiert wird als Großbuchstabe; Die Decodierung wird fehlschlagen, da der codierte Test in Großbuchstaben geändert wurde und die Funktion fehlgeschlagen ist.

    
Saket 18.10.2013 05:47
quelle
1

Ich kann die CSS-Variante von kapa nicht verwenden, weil ich diese für das Title-Tag benötige. Die von ircmaxell bereitgestellte Lösung mag richtig sein, aber da einige Server keine mbstring Erweiterung haben, ist diese Lösung möglicherweise besser:

%Vor%     
Julian F. Weinert 10.03.2014 09:54
quelle

Tags und Links