Neu Emojis ❤ werden nicht korrekt angezeigt.

holzpuppe

Sehr aktives Mitglied
14. Oktober 2011
1.715
260
Leipzig
Hallo,
im Shop 4.05.6 wurden Emojis im Titel korrekt angezeigt.
Nach Update auf die 4.06.3 hab ich nicht mal Punycode.
Aus
"❤" <----neben dem Herz sollte jetzt noch ne Weintraube sein. Aber das Forum mag das vlt. nicht?

wird auf einmal
"dG"
ich würd ja verstehen wenn da "xn--qeiw018m" eventuell steht aber neee.

Idee woran das liegen könnte?

Die PHP-Version scheint es schon mal nicht zu sein.
 

FPrüfer

Moderator
Mitarbeiter
19. Februar 2016
1.881
529
Halle
Danke für die Rückmeldung. Gibt es schon eine schnelle "dirty" Lösung?😱
Dirty wäre jetzt in includes/tools.Global.php das StringHandler::unhtmlentities und StringHandler::htmlentities wieder rauszunehmen. Dann besteht aber wieder das Problem, das Metaangaben ggfs. nicht korrekt gekürzt werden, weil die HTML-Sonderzeichen nicht nur ein Zeichen lang sind.
 

holzpuppe

Sehr aktives Mitglied
14. Oktober 2011
1.715
260
Leipzig
Nach etwas rumprobieren scheint das hier erstmal zu funktionieren (Also zumindest gibt es keine Fehlermeldung. 😕) :
Code:
function truncateMetaDescription($cDesc)
{
    $conf      = Shop::getSettings([CONF_METAANGABEN]);
    $maxLength = !empty($conf['metaangaben']['global_meta_maxlaenge_description']) ? (int)$conf['metaangaben']['global_meta_maxlaenge_description'] : 0;
    return prepareMeta($cDesc, null, $maxLength);
}
/**
 * @param string $metaProposal the proposed meta text value.
 * @param string $metaSuffix append suffix to meta value that wont be shortened
 * @param int $maxLength $metaProposal will be truncated to $maxlength - strlen($metaSuffix) characters
 * @return string truncated meta value with optional suffix (always appended if set)
 */
function prepareMeta($metaProposal, $metaSuffix = null, $maxLength = null)
{
    $metaProposal = str_replace('"', '',($metaProposal));
    $metaSuffix   = !empty($metaSuffix) ? $metaSuffix : '';
    if (!empty($maxLength) && $maxLength > 0) {
        $metaProposal = substr($metaProposal, 0, (int)$maxLength);
    }
    return trim(preg_replace('/\s\s+/', ' ', $metaProposal)) . $metaSuffix;
}
 

Ähnliche Themen