Caracteres com acentuação não mudam com strrev e problema similar ao usar editor de texto.

caracteres diferentes não funcionam no meu php
Um problema que tive, não apenas ao tentar reverter frases, foi com caracteres acentuados que não eram revertidos no formato utf8. Estava a tentar mudar o host de um site, para uma hospedagem mais barata 😂⁧, e tive um problema, pensei tratar-se da versão PHP ou configurações do servidor, mas não, um dos problemas foi abrir o aquivo e salvá-lo, por algum motivo era salvo numa codificação ANSI ou Unicode e não UTF-8, fazia o upload e, ao acessar a página web os caracteres acentuados e o 'ç' apareciam com problema ou, no caso de um filtro que usei estes não eram filtrados. Resolvi salvando o arquivo na codificação UTF8 - fica a dica para quem usa criar/editar em coisas como 'bloco de notas' ou documento de texto(que para php, html... tem que ser algum que não aplica formatações ou estilos) - e transferindo novamente.
Outro caso, que eu nunca havia usado com letras acentuadas, é o 'strrev', e este dá problema, não deu mensagem de erro, mas deu merd...:

<?php
echo strrev("Olá mundo!"); //mostrou "!odnum �lO" ao invés de "!odnum álO"
?>


Um tipo de 'gambiarra' para corrigir o que parece um bug ao inverter(de trás para frente) uma frase ou texto com acentuação:

<?php
function utf8_inversor($str){
preg_match_all('/./us', $str, $ar);
return join('',array_reverse($ar[0]));
}

$Reverso=utf8_inversor("Olá mundo!");

echo $Reverso; //mostra "!odnum álO"
?>



Fonte: http://php.net/manual/pt_BR/function.strrev.php

Códigos para exibir data e hora em Php, tanto pegar hora do servidor ou GMT

Maneiras fáceis de usar datas e horas em arquivos Php que encontrei como melhor opção numa página do site www.hardware.com.br e tem até um script js, talvez alguns não percebem muito a que serve isso, mas tem alguns usos, só atente que:
script em php calendario data e hora
H = hora
i = minuto
s = segundo
y = ano
m = mês
d = dia

Sobre o primeiro exemplo

O date_default_timezone_set é para php 5.1.0 e deixei como anotação, se a versão php do servidor tem essa opção ativa você pode desmarcar que possivelmente irá funcionar, desmarcar ou desfazer anotação basta tirar os caracteres // do início da linha, está especificado o fuzo de São Paulo da América, e você pode encontrar outros locais(timezones) clique aqui e escolha o continente.

Código de exemplo 1

//date_default_timezone_set('America/Sao_Paulo');
$data = date('d/m/Y');
$horario = date('H:i:s');

//Exibe a data
echo $data;

//Exibe a hora
echo $horario;


Sobre o segundo exemplo

Outro código que também funcionou muito bem, foi esse abaixo, mas, no caso, ele se baseará no GMT e

Usando Php para retirar tags, inclusive script e style de Html

Um tempo atrás postei um modo de 'tirar' tags Html com PHP, porém, um detalhe é que retirava as tags mas o conteúdo de script e style não eram retirados, foi então que resolvi o problema usando um modo de mudar caracteres com PHP para depois poder apagar ele.

Retirar as tags Html, transformar e apagar os scripts e styles

Modo de não precisar usar extensão de arquivo em Url? Com uso de Htaccess

Um modo de não precisar usar extensão em Url de arquivos de diversos tipos usando o .htaccess para permitir essa manipulação.

O formato do arquivo poderá ser ignorado mas não será totalmente oculto e nem mesmo bloqueado, apenas ficará a opção de usar ou não, pois o arquivo original não mudará.

Funciona para qualquer tipo de arquivo, php, css, js, mas um uso bem útil para mim foi no formato de imagens, ao criar uma página com várias imagens na qual eu coloquei o formato em minusculas e usei mais de um editor para criar as imagens um deles salvou com extensão em maiúscula, aí que resolvi usar a opção de remover a extensão no nome do arquivo ao escrevê-lo, assim também poupar alguns bytes no código html.

No caso abaixo seria para não precisar digitar .png para acessar as imagens nesse formato
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.png -f
RewriteRule ^([a-z,0-9,A-Z,_-]+)$ /$1.png

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.PNG -f
RewriteRule ^([a-z,0-9,A-Z,_-]+)$ /$1.PNG


O problema que eu tive, parece ter se estender para mais formatos de arquivos, ou pode ser que tal configuração seja padrão no servidor que testei, assim, se eu tivesse um outro arquivo com mesmo nome em mesmo diretório poderia me dar erro, sendo assim, esse código ainda me parece problemático, cabe ainda testes, mas, o problema será muito mais do uso de Url pelo webmaster ou pelo sistema por ele criado/gerenciado.

A última linha do código também poderia ser
RewriteRule ^(.*)$ $1.PNG

Sugestão de pesquisa .htaccess:
Uma função parecida, apenas para arquivos php, pode ser "AddType application/x-httpd-php" onde lhe permite usar outra extensão para arquivos php, ler mais

Uma função que poderia servir de "interpretar Url" maiúsculas e minusculas como igual seria "CheckCaseOnly on" ou "CheckSpelling On" mas, em muitos servidores não funciona, causa um erro 500 Internal Server Error

Mudar primeira letra minúscula de frase para Maiúscula com PHP

Existem modos de transformar a primeira letra de uma frase ou texto em maiúscula usando PHP, claro que nem sempre a coisa é tão fácil e completa por tratar-se de um trabalho não humano, mas, vou mostrar algum modo de fazer essa mudança de letras minúsculas para maiúsculas.

Exemplo 1, tenta transforma a primeira letra da string em maiúscula

Esse código usa ucfirst que tem essa função de transformar a primeira letra(caractere) da string em maiúscula, mas é falho por não mudar acentuadas, Ç ou caracteres não alfabéticos serão considerados como o primeiro, aí ferra tudo.

<?php

$Frase = 'este é o meu texto super coerente';
// Transforma o primeiro caracter do texto em maiuscula, desde que não começe com espaço, nem ç, nem acentuada
$FirstLetterM=ucfirst($Frase);

// exibir meu texto
echo $FirstLetterM;
// Resulta em 'Este é o meu texto super coerente'
?>

Este exemplo acima, bem simples, como você vê tem um problema, se começar com uma acentuada ele simpesmente nada fará, só manterá o texto ou frase normalmente

Exemplo 2, com filtros "fortes" para trocar acentuadas minusculas


Esse filtro usa o primeiro código acima e depois um outro filtro de caracteres difinidos por você, para saber mais clique, só que, eu programei o apenas para alguns caracteres, caberá a você mudar, se quiser

<?php

$Frase = '  é este o meu texto que começa com acentuada';
// Transforma o primeiro caracter do texto em maiuscula, desde que não começe com espaçamento, nem ç, nem acentuadas
$FirstL=ucfirst($Frase);

// 'concatena' uns caracteres qualquer '§on§' que para saber o início do texto
$PrimeiraLetra='§on§'.$FirstL;
// agora meu texto virou: '§on§  é este o meu texto que começa com acentuada'

// se meu texto começar com espaçamento esse filtro tirar até 5
$FiltraEspaco=array("§on§     "=>"§on§","§on§    "=>"§on§","§on§   "=>"§on§","§on§  "=>"§on§","§on§ "=>"§on§");
$NotFirstSpace=strTr($PrimeiraLetra,$FiltraEspaco);
// agora meu texto virou: '§on§é este o meu texto que começa com acentuada'

// quando encontrar §on§ seguido de ç, é, á, ó, ú, í  troca por §on§ seguida de maiúscula que eu defini
$FiltraMinuscula=array("§on§ç"=>"§on§Ç","§on§é"=>"§on§É","§on§á"=>"§on§Á","§on§ó"=>"§on§Ó","§on§ú"=>"§on§Ú","§on§í"=>"§on§Í");
$AsMaiuscula=strTr($NotFirstSpace,$FiltraMinuscula);
// agora meu texto virou: '§on§É este o meu texto que começa com acentuada'

// retirar os caracteres feios '§on§' do inicio do texto
$TiraLixo=array("§on§"=>"");
$AgoraMaiuscula=strTr($AsMaiuscula,$TiraLixo);
// agora meu texto virou: 'É este o meu texto que começa com acentuada'


// exibir meu texto
echo $AgoraMaiuscula;
// Resulta em 'É este o meu texto que começa com acentuada'
?>


Exemplo 3, tentará mudar a primeira letra da string para maiúscula

Esse código usa strtoupper que tem essa função de transformar as letra da string em maiúscula, mas é falho por não mudar acentuadas ou Ç e aqui, ele vai pegar só a primeira letra da string $str, pego a primeira letra com $str[0] e se eu quisesse a segunda usaria $str[1] e a terceira $str[2] e assim sucessivamente

<?php
$str= 'eis a minha frase';

// Pega o primeiro caractere da string e tenta converter em maiuscula
$str[0]=strtoupper($str);

// exibir minha frase
echo $str;
// Resultar em: 'Eis a minha frase'
?>


Só para criar minhocas nas nossas cabeças, e para dar mais uma amostragem desse último exemplo, já que interessante, vamos que eu queira mudar o terceira caractere(se letra) por uma maiúscula, claro, desde que não acentuada ou...
<?php
$str= 'eis a minha frase';

// Pega o primeiro caractere da string e tenta converte em maiúscula
$str[2]=strtoupper($str[2]);

// exibir minha frase
echo $str;
// Resultar em: 'eiS a minha frase'
?>


Código para Php substituição de caracteres de texto ou frase

Código simples em PHP que pode ser usado para substituição de caracteres diversos, letras, números, etc.
Código php para trocar palavras, letras, numeros e caracteres
Não vou dar muitas explicações porque não tem muito o que explicar, quem gosta de PHP precisa ser capas de, ao observar um código simples entender seu funcionamento, e quem souber o básico já poderá olhar os exemplos e decifrar.

Vendo o código abaixo entenda que o que será mudado é cada palavra da frase que dizer 'precisa' ela será substituída por 'é preciso'.
<?php
$FraseTexto='Para mudar não precisa inovar, para melhorar, precisa fazer diferente';

$TrocaCaractere = array("precisa" => "é preciso");
$JaMudouUnsCaracteres=strTr($FraseTexto, $TrocaCaractere);

echo $JaMudouUnsCaracteres;
// Para mudar não é preciso inovar, para melhorar, é preciso fazer diferente
?>


O exemplo abaixo é semelhante, mas mudei um pouco, agora quero duas substituições diferentes, as palavras 'não precisa' serão trocadas por 'melhor é' e depois irá substituir também 'fazer diferente' por 'muita qualidade!'

<?php
$FraseTexto='Para mudar não precisa inovar, para melhorar, precisa fazer diferente';

$TrocaCaractere = array("não precisa" => "melhor é", "fazer diferente" => "muita qualidade!");
$JaMudouUnsCaracteres=strTr($FraseTexto, $TrocaCaractere);

echo $JaMudouUnsCaracteres;
// Para mudar melhor é inovar, para melhorar, precisa muita qualidade!
?>


Assim eu posso criar diversas substituições, para muitos tipos de caracteres, alfanuméricos, acentuações, etc... mas, como sempre, códigos são complicados, alguns caracteres podem ser interpretados como parte do código, e, qualquer caracter errado num código PHP pode dar erro, agora, um exemplo mais complexo:

<?php
$FraseTexto='PEC280 pra reduzir número de deputados pela metade, pro Brasil economizar mais de meio bilhão anualmente, cada 1 dos 513 custa em média 170 mil mensalmente';


$TrocaCaractere = array(" pra " => " para ", " pro " => " para o ", "economizar " => "deixar de gastar ", "mensalmente" => "ao mês", " 1 " => " um ", " 2 " => " dois ", " reduzir " => " diminuir ", " em média " => " mais ou menos ", "anualmente" => "ao ano", "PEC" => "Projeto de Emenda Constitucional ", "0 mil " => "0.000 ", "1 mil " => "1.000 ", "2 mil " => "2.000 ", "3 mil " => "3.000 ");
$JaMudouUnsCaracteres=strTr($FraseTexto, $TrocaCaractere);


echo $JaMudouUnsCaracteres;
//Projeto de Emenda Constitucional 280 para reduzir número de deputados pela metade, para o Brasil deixar de gastar mais de meio bilhão ao ano, cada um dos 513 custa mais ou menos 170.000 ao mês

?>


Certo, nem tudo, viu que eu queria mudar " reduzir " para " diminuir ", mas não mudou, dificil explicar isso, imagine que aconteceu que meu "filtro" estava trocando o " pra " mas o " reduzir " está como que 'colado nele' por um espaçamento que teria que ser trocado ao mesmo tempo, se eu tivesse colocado assim:

"reduzir " => " diminuir "
Aí teria funcionado, ou, se

Para resolver problemas assim, eu poderia criar mais um filtro, ou dois ou três após aquele primeiro, isso poderia me trazer um problema, como sobrecarga do servidor em caso de muitos acessos ou outro que não grave, mas ficaria assim:



Códigos Php que pode exibir nomes de arquivos de um diretório

Códigos PHP com a função glob() que podem servir para mostrar nomes de arquivos e diretórios(pastas) que estão dentro do diretório onde ele for criado, mas, não mostra os sub-diretórios que estão dentro dos diretórios encontrados.
Uma utilidade se você tem muitos arquivos em um diretório e quiser listar apenas alguns, com determinada extensão ou com nomes iniciados com alguma letra.

Códigos Php com glob()

Você pode usar todo o código para ver qual o resultado ou apenas parte dele
<?php
foreach (glob("*", GLOB_MARK) as $arquivo)
{echo "Encontrado arquivo ou diretório $arquivo \n <br>";};
// Retorna arquivos e diretórios com uma barra/ para não confundir com arquivos sem extensão

foreach (glob("*.*", GLOB_MARK) as $arquivo)
{echo "Tamanho do $arquivo é " . filesize($arquivo) . "\n <br>";};
// Retorna arquivos com extensão e tamanho em bytes

foreach (glob("i*.*", GLOB_MARK) as $arquivo)
{echo "Arquivos começado com b: $arquivo \n <br>";};
// Retorna arquivos começados com "b"

foreach (glob("*", GLOB_ONLYDIR) as $arquivo)
{echo "Diretório $arquivo \n <br>";};
// Retorna os diretórios apenas...

foreach (glob("{*.php,*.htm}",GLOB_BRACE) as $arquivo)
{echo "Arquivo: $arquivo \n <br>";};
// Retorna arquivos .php e .htm

foreach (glob("{images/{*.JPEG,*.JPEG,*.jpeg,*.jpg},images/*.gif,info/*}",GLOB_BRACE) as $arquivo)
{echo "Diretório e arquivo: $arquivo \n <br>";};
// Retorna o que pode estar nos diretórios...
// Retorna arquivos jpeg do diretório images, incluindo com extensão maiúscula
// Retorna arquivos gif do diretório images, provável que só com extensão minúsculas
// Retorna diretóros e arquivos que tem em diretório info
?>


Fonte de parte dos códigos e mais informações http://php.net/manual/pt_BR/function.glob.php

Filtrar e impedir números ou letras com uso de Php

Algumas maneiras de filtrar ou separar números e letras de textos ou palavras usando Php.
filtro de numeros e letras em php
Nem um dos códigos abaixo é um filtro muito completo ou que garanta exatamente um resultado eficiente, mas como um dia postei filtro para palavra ou numero pré estabelecido e agora precisei um filtro que impedisse números, aí resolvi postar um que usei e outros que podem vir a ter alguma utilidade.

Primeiro exemplo com is_numeric

Infelizmente não reconhece vírgula como parte de valor numérico

<?php
$valores="+422.77";

if(is_numeric($valores)){
// Se valores permitidos
$ValorFinal = $valores." é numérico";}
else{
// Se valores não permitidos
$ValorFinal = $valores." não numérico! Pode usar sinal positivo ou negativo +- no inicio do número e pode usar ponto(.) mas não virgula";
};

echo $ValorFinal;
//resultar em "+422.77 é numérico"
?>

Exemplos de códigos que filtram ou exibem só o "permitido"

Esse código é bom para copiar e testar com outra frase e diferentes caracteres

<?php
$FraseNumeroE="Vamos criar filtros em PHP...? Com Ç e nÚmeros 1.234.567,89";

// Permite apenas números
$Filtrar = eregi_replace('([^0-9])','',$FraseNumeroE);
echo $Filtrar.'<br>';
//Resultará: 123456789

// Permite números e ponto e vírgula . , mas problematico
$Filtrar = eregi_replace('([^0-9.9,])','',$FraseNumeroE);
echo $Filtrar.'<br>';
//Resulta: ...1.234.567,89

// impede apenas números
$Filtrar = eregi_replace('([0-9])','',$FraseNumeroE);
echo $Filtrar.'<br>';
//Resulta: Vamos criar filtros em PHP...? Com Ç e nÚmeros ..,

// permite somente letras simples impede acentuadas, retira espaços, ç...
$Filtrar=eregi_replace('([^a-z])','',$FraseNumeroE);
echo $Filtrar.'<br>';
//Resulta: VamoscriarfiltrosemPHPComenmeros

?>


    Outros artigos parecidos e interessantes:
  • Perguntas php-numeros << Vi um JavaScript para alerta em formulário que pode ser útil, se modificado...
  • ctype_digit Verifica se são apenas números "simples" de zero a nove, ou seja números inteiros
  • ctype_alpha "Verifica se os caracteres são alfabéticos", permite maiúscula/minúscula, talvez não permita ç, nem "espaçamento em branco" nem acentuadas
  • ctype_alnum "Verifica se os caracteres são alfanuméricos" permite ABcd1984, ou seja, pode maiúscula/minúsculo e números inteiros. Talvez não permita ç, nem "espaçamento em branco", nem acentuadas e nem outros caracteres de sinais como?!@%-+

É interessante mudar nome e extensão de arquivo usando Htaccess?

Uma maneira de manipular o nome de um arquivo ou diretório usando .htaccess para isso, tem muitos motivos, tais como esconder uma extensão de um arquivo e assim esconde o tipo de códigos usados do lado do servidor, por exemplo, eu posso fazer uma página em php ter uma extensão em html ou fazer ela parecer um diretório.
Como mudar extensão e nome de arquivo com htaccess


Levamos em conta que estamos visando o diretório raiz e usando o .htaccess para manipular sub-diretórios e arquivos do diretório raiz e por isso você já precisa ter uma boa noção de caminhos de seus diretórios e como isso funciona