Beim Kopieren von Texten aus PDF-Dateien wandern oft unsichtbare ASCII Sonderzeichen in WordPress-Beiträge beziehungsweise Advanced Custom Fields Textfelder, die dann auf der Website für unschöne Darstellungsfehler sorgen können. Mit dieser PHP-Funktion samt passenden Aufrufen werden diese Sonderzeichen beim Sichern automatisch entfernt.
<?php
/**
* Unsichtbare ASCII Sonderzeichen entfernen
*/
function mn_sanitize_invisible_characters($string)
{
if (!is_string($string) || $string === '') {
return $string;
}
// Normalize encoding (repairs malformed UTF-8 sequences)
$string = mb_convert_encoding($string, 'UTF-8', 'UTF-8');
// Remove ASCII + extended control chars (C0 + C1), except \n, \r, \t
$string = preg_replace('/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F\x80-\x9F]/u', '', $string);
// Remove zero-width + BOM + NBSP (replace with normal space)
$string = preg_replace('/[\x{200B}-\x{200D}\x{FEFF}\x{00A0}]/u', ' ', $string);
return $string;
}
/**
* Post-Inhalte beim Sichern anpassen
*/
add_filter('content_save_pre', function($value)
{
$value=mn_sanitize_invisible_characters($value);
return $value;
}, 10, 1);
/**
* ACF-Inhalte beim Sichern anpassen
*/
add_filter('acf/update_value', function($value)
{
$value=mn_sanitize_invisible_characters($value);
return $value;
}, 10, 1);