Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa noite amigos! Venho pedir ajuda para resolver um problema referente a UTF-8, quem puder ajudar, eu agradeceria muito. Sempre antes de inserir um novo post, usava normalmente esta função para criar meus slugs no qual puxo do meu arquivo funcoes.php:
function slug($string){
return strtolower(preg_replace( array( '/([`.,!¨:^~\'"-])/', '/([-]{2,}|[-+]+|[\s]+)/', '/(,-)/'), array( null, '-', ', '), iconv( 'UTF-8', 'ASCII//TRANSLIT', $string ) ));
}
Porém depois que passei todos os mesmos aquivos para o servidor de hospedagem, esta função tem dado problema, pois na hora de converter para poder inserir em banco, qualquer letra com acento agora recebe o clássico "?", isso já antes de inserir, pois todo o resto dos dados que não passam por essa função, o DB recebe normalmente com seus acentos.
Sim, ja salvei todos os arquivos em UTF8 sem BOM, como também declarei no head de meu header. Alguém teria alguma idéia do que pode ter acontecido? Se o problema esta realmente nesta função?
---
Para quem quiser ver um pouco da estrutura:
conexao.php->
...
$conexao= "mysql:host=".HOST.";dbname=".DB.";charset=utf8";
$opcoes = array(
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8'
);
//CONEXÃO
try{
$conn = new PDO ($conexao,USER,PASS,$opcoes);
$conn -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
...
header.php->
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="utf-8">
<?php
$nivels_necessarios = 'administrador,postador';
include_once("valida/restricao.php");
include_once("conect/conexao.php");
include_once("funcoes.php");
?>
...
funcoes.php->
function slug($string){ return strtolower(preg_replace( array( '/([`.,!¨:^~\'"-])/', '/([-]{2,}|[-+]+|[\s]+)/', '/(,-)/'), array( null, '-', ', '), iconv( 'UTF-8', 'ASCII//TRANSLIT', $string ) )); }
function cadastra(){
Aqui recebo tudo da página cadastrar.php via $_POST, não postei pq é muito longa.
Chamo minha função:
$categoria_slug = slug($categoria);
Insiro tudo em banco.
}
Meu banco-> (Como eu disse, recebe todos os acentos, menos das variaveis que foram slugadas.)
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server utf8
character_set_system utf8
character_sets_dir /usr/share/mysql/charsets/
collation_connection utf8_general_ci
collation_database utf8_general_ci
collation_server utf8_unicode_ci
Carregando comentários...