¿Alguien puede proporcionarme una función para generar babosas?

Dec 30 2020

Las funciones que utiliza Wordpress para generar slugs se encuentran dispersas en varias funciones y filtros. No puedo encontrarlos a todos. ¿Alguien puede proporcionarme una sola función php para generar slugs? No necesito todas las funcionalidades de Wordpress, solo necesito codificar caracteres no latinos y eliminar los caracteres ilegales que no están permitidos en la URL.

Esta publicación proporciona una función, pero no puede manejar caracteres no latinos.

¡Gracias!

Respuestas

1 TomJNowell Dec 30 2020 at 21:14

Esta publicación proporciona una función, pero no puede manejar caracteres no latinos.

Eso es porque las URL no pueden tener caracteres ASCII o no latinos.

Los navegadores pueden mostrarle caracteres no latinos, pero es solo una característica de la interfaz de usuario.

Por ejemplo, si visita esta URL de Wiktionary:, la URL de https://en.wiktionary.org/wiki/わかもの#Japanesesu navegador codifica los caracteres japoneses para obtener la URL real: https://en.wiktionary.org/wiki/%E3%82%8F%E3%81%8B%E3%82%82%E3%81%AE#Japaneseluego la URL la decodifica cuando muestra la URL. La versión con los signos de porcentaje es la URL real.

Lo mismo ocurre con cualquier otro código de caracteres no ASCII, por ejemplo, árabe. Si crea una publicación con el slug わかもの, guarde y verifique la base de datos, no verá わかもの, verá %e3%82%8f%e3%81%8b%e3%82%82%e3%81%ae. Asimismo, la interfaz de usuario le mostrará los caracteres japoneses, pero si copia el enlace, obtendrá la versión codificada.

Si luego actualizamos la base de datos y cambiamos el slug de la publicación a わかもの, la publicación ahora no se puede cargar y obtenemos un 404. Eso es porque el slug no es válido y no es posible cargar una URL que coincida con ese slug.

sí, necesito que los caracteres no latinos estén codificados como% xx

Es necesario que urlencodeseecho urlencode( $slug )