Modificar script para obtener URL Amigable :)

  • Autor Autor SuperUser
  • Fecha de inicio Fecha de inicio
SuperUser

SuperUser

Gamma
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Gentuza, como andan? :ghost:

Intentaré pedir algo de ayuda a los que saben de PHP. Resulta que intento corregir las URL amigables en un script que estoy usando.
Conozco cuales son los dos archivos que hay que modificar.

En uno de ellos, tengo este código:

PHP:
*/
	function setSEO($string, $max = false) {
		// ESPAÑOL
		$espanol = array('á','é','í','ó','ú','ñ');
		$ingles = array('a','e','i','o','u','n');
		// MINUS
		$string = str_replace($espanol,$ingles,$string);
		$string = trim($string);
		$string = trim(preg_replace('/[^ A-Za-z0-9_]/', '-', $string));
		$string = preg_replace('/[ \t\n\r]+/', '-', $string);
		$string = str_replace(' ', '-', $string);
		$string = preg_replace('/[ -]+/', '-', $string);
		//
		if($max) {
			$string = str_replace('-','',$string);
			$string = strtolower($string);
		}
		//
		return $string;
	}
	/*
Y en el otro archivo este otro:

PHP:
*/
function smarty_modifier_seo($string){
	// ESPA�OL
	$espanol = array('�','�','�','�','�','�');
	$ingles = array('a','e','i','o','u','n');
	// MINUS
	$string = str_replace($espanol,$ingles,$string);
	$string = trim($string);
	$string = trim(preg_replace("/[^ A-Za-z0-9_]/", "-", $string));
	$string = preg_replace("/[ \t\n\r]+/", "-", $string);
	$string = str_replace(" ", "-", $string);
	$string = preg_replace("/[ -]+/", "-", $string);
	//
	return $string;
}

Así como están los códigos, cada vez que creo una publicación con alguna palabra con tilde (canción, información), la URL se muestra de la siguiente forma:

miweb.com/canci-n



O sea, reemplaza la letra con tilde, o caracter extraño, por un guion. Pero el título de la publicación lo muestra bien. (A excepción de los caracteres extraños)

¿Soluciones? 😉

:encouragement:
 
Intenta agregar al inicio de tu funcion
PHP:
utf8_decode
 
Ya lo solucioné amigos.
 
Sino colocas la solución, en un futuro alguien que tenga la misma cuestion tendra que reabrir el post 😉
 
Fue muy sencillo, solo tuve que pensar un poco. Reemplazé los � por las letras correspondientes con sus tildes.
 
Ehh? :fatigue:
 
Cambio esto
PHP:
 $espanol = array('�','�','�','�','�','�');

por esto:

PHP:
$espanol = array('á','é','í','ó','ú','ñ');

o eso creo xd
 
Tal cual javieer, asi fue como hice.
 
Atrás
Arriba