La verdad es que no entiendo eso de la codificación, pero esta función no la quiero para mostrar texto en pantalla, sino para cambiar el nombre de un archivo al subirlo al servidor.
Cómo debería darle la codificación para que funcione bien? Te copio el código que tengo actualmente. Uso Dreamweaver CS5.
Código PHP:
<?php
function formatearNombre($cadena){
$tofind = "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ· ";
$replac = "AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn-_";
return(strtr($cadena,$tofind,$replac));
}
require_once('../classes/documentos.class.php');
if(isset($_GET['action'])){
switch($_GET['action']){
case 'nuevo':
if (!empty($_FILES)) {
$titulo = htmlspecialchars(trim($_POST['titulo']));
$descripcion = htmlspecialchars(trim($_POST['descripcion']));
$keywords = htmlspecialchars(trim($_POST['keywords']));
$idInstitucion = htmlspecialchars(trim($_POST['idInstitucion']));
$idCarrera = htmlspecialchars(trim($_POST['idCarrera']));
$idMateria = htmlspecialchars(trim($_POST['idMateria']));
$idProfesor = htmlspecialchars(trim($_POST['idProfesor']));
$tempFile = $_FILES['Filedata']['tmp_name'];
$idUnico = date('Ymd');
$idUnico .= $idInstitucion;
$idUnico .= $idCarrera;
$idUnico .= $idMateria;
$idUnico .= $idProfesor;
$idUnico .= '_';
$size = $_FILES['Filedata']['size'];
$fileName = $idUnico . $_FILES['Filedata']['name'];
$fileName = formatearNombre($fileName);
$targetPath = $_SERVER['DOCUMENT_ROOT'] . $_REQUEST['folder'] . '/';
$targetFile = str_replace('//','/',$targetPath) . $fileName;
if(move_uploaded_file($tempFile,$targetFile)){
$objDocumento = new Documentos;
if ($objDocumento->nuevoDocumento(array($idInstitucion, $idCarrera, $idMateria, $idProfesor, $titulo, $descripcion, $keywords, $fileName, $size)) == true){
echo 'ok';
}else{
echo 'error';
}
} else {
echo 'error';
}
}
break;
//Aca van otros CASE
}
}
?>
No lo uso en un documento que se decodifique en HTML, sino un PHP que procesa las solicitudes y devuelve ok o error.