Un usuario preguntó 👇
Aquí hay una imagen del personaje que también aparece en pagespeed.ninja:
https://pasteboard.co/HvY6Onc.png
El problema surge cuando HTML Parser se ajusta de «Rápido simple» a «Estándar completo». Quiero usar «libxml» pero contradice demasiadas cosas en mi página.
Básicamente en cualquier lugar parece analizarse en este carácter:
Este tema fue modificado hace 2 años, 4 meses por.
(@sjf)
Hace 2 años, 4 meses
Sí, no estoy seguro de por qué. No hemos agregado nada a lo que agrega el editor de TinyMCE, así que tal vez el
convertir personajes?
Encontré que esto parece prometedor, pero no parece funcionar:
add_filter( 'content_save_pre', 'remove_buggy_nbsps', 1 );
function remove_buggy_nbsps( $content ) {
//strip both types of non-breaking space in case NGG or similar is installed
$content = str_replace( ' ', ' ', $content) ;
$content = str_replace( 'xc2xa0', ' ', $content) ;
return $content ;
}
Si se incluye aquí por miedo, te ayudará. Quizás si este código se ejecutara justo antes de la conversión de caracteres, en el analizador estándar completo, ¿quizás funcionaría? Incluso si hubiera una forma de no producir nada, o de obtenerlos todos después y eliminarlos … eso también funcionaría.
(@sjf)
Hace 2 años, 4 meses
(fuente del bloque de código anterior: https://ckmacleod.com/2017/03/23/exterminating-non-breaking-space-bug/)
(@sjf)
Hace 2 años, 4 meses
¡Ah-hah! ¡He encontrado una solución! Al igual que con el código anterior, ¡solo este funciona! ¿Ves algún problema con el uso de esto (en lo que respecta a PageSpeed) hasta que se solucione en PSN?
function remove_nonbreakin_spaces($string) {
// the non-breaking space character, got you!
// http://www.utf8-chartable.de/unicode-utf8-table.pl?start=128&number=128&utf8=string-literal&unicodeinhtml=hex
return str_replace("xc2xa0", " ", $string);
}
add_filter('the_excerpt', 'remove_nonbreakin_spaces', 99);
add_filter('the_content', 'remove_nonbreakin_spaces', 99);
Fuente: https://core.trac.wordpress.org/ticket/31157
(@dryabov)
Hace 2 años, 4 meses
No estoy seguro de que sea una buena idea reemplazar el espacio normal con un espacio irrompible, porque a veces los espacios irrompibles son útiles (por ejemplo, entre un nombre y un apellido, o entre un número y una unidad, etc.). Entonces reemplazaría str_replace con algo como esto
return preg_replace (“(?
solo una secuencia de bytes UTF8 correctos reemplaza el espacio ininterrumpido que no es UTF8.
(@dryabov)
Hace 2 años, 4 meses
Cuando probó su sitio web con Apache, ¿utilizó la misma base de datos? (¿no fue exportado / importado a otro?)
¿Y podría comprobar que el juego de caracteres y las intercalaciones de cada tabla de la base de datos (y la propia base de datos) son compatibles con utf8 (predeterminado con «utf8»)?
¿Cuáles son los valores de DB_CHARSET y DB_COLLATE en wp-config.php?
(@sjf)
Hace 2 años, 4 meses
return preg_replace("(?<!xC2)xA0", "xC2xA0", $string);
☝️ No estoy seguro de qué hace exactamente esto, pero todo el contenido se elimina por completo de la página.
Verificaré el resto de la información y se la devolveré.
(@sjf)
Hace 2 años, 4 meses
Cuando probó su sitio web con Apache, ¿utilizó la misma base de datos? (¿no fue exportado / importado a otro?)
No, se exportó en vivo y se importó localmente.
¿Y podría comprobar que el juego de caracteres y las intercalaciones de cada tabla de la base de datos (y la propia base de datos) son compatibles con utf8 (predeterminado con «utf8»)?
Sí, la «coordinación de la conexión del servidor» está configurada utf8mb4_unicode_ci
cual es wp_posts
y wp_postmeta
la columna también. Esto es lo mismo para una base de datos local y en vivo.
¿Cuáles son los valores de DB_CHARSET y DB_COLLATE en wp-config.php?
define('DB_CHARSET', 'utf8');
define('DB_COLLATE', '');
¿Debería cambiar estos a utf8mb4_unicode_ci
ya que la base de datos en sí es diferente de lo que está configurado para ella DB_CHARSET
y DB_COLLATE
?
Esta respuesta fue modificada hace 2 años, 4 meses por.
(@sjf)
Hace 2 años, 4 meses
Además, estoy de acuerdo en que mantener espacios intactos es una buena idea, así que he cambiado mi código hasta ahora: return str_replace("xc2xa0", " ", $string);
¿Solucionó tu problema??
0 / 0