Jump to content


Photo

Bagunca()


  • Faça o login para participar
8 replies to this topic

#1 Chinello Cybernético

Chinello Cybernético

    Simplesmente "Chinello"

  • Usuários
  • 1892 posts
  • Sexo:Masculino
  • Localidade:Canoas - RS

Posted 06/02/2006, 10:15

Título: bagunca()
Descrição: Pega uma frase e bagunça as letras de cada palavra, como um e-mail que andava por ae há um belo tempo atras.

---------------------------------------------------------

Sintaxe: bagunca(string string)
Retorno: String
Descrição: Passe uma frase, e ela te retorna a mesma, só que um pouco bagunçada.
Bibliotecas: Nenhuma
Limitações: PHP 4.0+

Função:

<?
function bagunca($txt)
{
	$ntxt = '';

	$p = explode(' ', $txt);

	foreach ($p as $v)
	{
    if(strlen($v)>3)
    {
   	 $nal = $al = array();
   	 $np = $nal[] = $v{0};
 
   	 for($i=1; $i<strlen($v)-1; $i++)
   	 {
     	 $al[] = $v{$i};
   	 }
 
   	 srand((float)microtime()*1000000);
   	 shuffle($al);
 
   	 for($i=0;$i<count($al); $i++)
   	 {
     	 $nal[] = $al[$i];
     	 $np .= $al[$i];
   	 }
 
   	 $nal[] = $v{strlen($v)-1};
   	 $np .= $v{strlen($v)-1}; 
     
   	 $ntxt .= $np.' ';
    }
    else $ntxt .= $v.' ';
	}

	return substr_replace($ntxt, '', -1);
}
?>

Não sei se vocês lembram deste e-mail, que lhes mostrava a seguinte mensagem:

De aorcdo com uma pqsieusa de uma uinrvesriddae ignlsea, não ipomtra em qaul odrem as lrteas de uma plravaa etãso, a úncia csioa iprotmatne é que a piremria e útmlia lrteas etejasm no lgaur crteo. O rseto pdoe ser uma bçguana ttaol que vcoê pdoe anida ler sem pobrlmea. Itso é poqrue nós não lmeos cdaa lrtea isladoa, mas a plravaa cmoo um tdoo.


Com essa função, vocês poderão reproduzir isso, e comprovar se isso é verdade ou não.. :)

Quando eu fiz essa função, e faz mais de 1 ano, eu testei ela com a mesma frase ( escrita de forma correta é óbvio ) e ela me retornou o seguinte:

De aorcdo com uma pusisqea de uma uiainrdevdse igansel, não imtorpa em qual oderm as letars de uma parlvaa eoãts, a úicna cosia itornpmate é que a premriia e a úitlma ltares easjetm no lgaur ceort. O rseto pdoe ser uma banugçã tatol que vcoê pode aidna ler sem pmablore. Itso é pqorue nós não lmeos cadas ltrea iadsaol, mas a pvlaraa como um tood.

Como deu pra ver, ela não funciona 100%, mas como eu fiz de brincadeira, sem fim algum, nem me preocupei com isso.. hehe.. Se vocês quizerem ajudar, estamos todos aqui pra isso. ;)

Espero q gostem.. (y)
Diego Sampaio - kroW - PHP Framework > http://chinelloweb.net/
chinello at gmail dot com

System > Athlon 64 3200+ Mobile | Kubuntu 7.04 Fesity Fawn AMD64 | Kernel 2.6.20-16
Coding @ KDE 3.5.7 | PHP 5.2.1 | Apache 2.2.3 | MySQL 5.0.38

#2 Stormbringer

Stormbringer

    I'd love to stay with you all

  • Ex-Admins
  • 2927 posts
  • Sexo:Não informado
  • Localidade:Goiânia - GO
  • Interesses:Atualmente: pesquisa e desenvolvimento de web-games

Posted 06/02/2006, 18:55

cara... nao é que é verdade mesmo?

๑۩۞۩๑Let the Carnage Begin!!๑۩۞۩๑


#3 Balala

Balala

    What you want for yourself?

  • Ex-Admins
  • 3357 posts
  • Sexo:Não informado
  • Localidade:Jaraguá do Sul - SC
  • Interesses:http://forum.wmonline.com.br/index.php?showtopic=5792

Posted 06/02/2006, 19:28

E a única que me embaralhei pra ler foi igansel. Por sinal, a única que não está com as letras do inicio e fim, certas!
Balala - Admin Geral Webfórum - Retired
Twitter
Stop Spreading Lies!
Posted Image

#4 Chinello Cybernético

Chinello Cybernético

    Simplesmente "Chinello"

  • Usuários
  • 1892 posts
  • Sexo:Masculino
  • Localidade:Canoas - RS

Posted 06/02/2006, 19:29

hehe..

Olhando a frase novamente.. Vi que o problema acontece quando o há um ponto (qualquer tipo de pontuação) no final da palavra..

Aí a função pensa que é uma letra, e deixa o ponto no final, e bagunça o resto, ou seja, estragando a palavra de verdade.

É uma implementação simples a fazer na função.. Mas que me dá preguiça. :lol:

Se ninguém se dispor a ajudar, eu ajudo. ;)
Diego Sampaio - kroW - PHP Framework > http://chinelloweb.net/
chinello at gmail dot com

System > Athlon 64 3200+ Mobile | Kubuntu 7.04 Fesity Fawn AMD64 | Kernel 2.6.20-16
Coding @ KDE 3.5.7 | PHP 5.2.1 | Apache 2.2.3 | MySQL 5.0.38

#5 Chinello Cybernético

Chinello Cybernético

    Simplesmente "Chinello"

  • Usuários
  • 1892 posts
  • Sexo:Masculino
  • Localidade:Canoas - RS

Posted 06/02/2006, 19:31

E a única que me embaralhei pra ler foi igansel. Por sinal, a única que não está com as letras do inicio e fim, certas!

Na verdade não Balala.. Todas as que possuem um ponto, ou vírgula (como expliquei no post anterior e junto com o teu), estão erradas, ou seja, não possuem a primeira e última letra como da palavra original. ;)
Diego Sampaio - kroW - PHP Framework > http://chinelloweb.net/
chinello at gmail dot com

System > Athlon 64 3200+ Mobile | Kubuntu 7.04 Fesity Fawn AMD64 | Kernel 2.6.20-16
Coding @ KDE 3.5.7 | PHP 5.2.1 | Apache 2.2.3 | MySQL 5.0.38

#6 gonacts

gonacts

    "Agora eu tb tenho um Tux..." =D

  • Usuários
  • 1030 posts
  • Sexo:Não informado

Posted 07/02/2006, 13:12

oia.. :blink:


manerão...tem como ler sim...
"Ninguém é tão inteligente que não possa aprender e ninguém é tão burro que não possa ensinar.."
"As dúvidas engrandecem nossa sabedoria, mas não basta somente tirá-las, temos que entendê-las"

#7 Paulo Freitas

Paulo Freitas

    ××××××× LRU #456504 ××××××× ××××××× LRM #364686 ×××××××

  • Ex-Admins
  • 5612 posts
  • Sexo:Masculino
  • Localidade:Campinas - SP

Posted 07/02/2006, 13:22

Acho que encurtei demais da conta ... :P
<?php

function str_scramble($str)
{
    return preg_replace('/[a-zA-Z0-9\\x80-\\xff]{2,}/e', 
               "substr('\\0', 0, 1) . str_shuffle(substr('\\0', 1, strlen('\\0') - 2)) . substr('\\0', strlen('\\0') - 1, strlen('\\0'))", $str);
}

?>
O único problema foi o suporte da minha função, extendido para no mínimo a versão 4.3.0 do PHP, pelo fato de eu usar a função str_shuffle(). Outro problema, que não sei até onde pode ser considerado um problema, foi o tempo de execução da função, que parece ser um pouco mais demorado. :(

Mas é isso aí, com ER tudo se pode. ^_^

PS: De quebra, concertei o bug da sua, que na minha não existe. :P

[]’s :DAté mais

#8 CocaWare

CocaWare

    Turista

  • Usuários
  • 42 posts
  • Sexo:Não informado

Posted 02/04/2006, 21:48

O que significa: \\x80-\\xff ?

Obrigado

Edição feita por: CocaWare, 02/04/2006, 21:49.


#9 Paulo Freitas

Paulo Freitas

    ××××××× LRU #456504 ××××××× ××××××× LRM #364686 ×××××××

  • Ex-Admins
  • 5612 posts
  • Sexo:Masculino
  • Localidade:Campinas - SP

Posted 02/04/2006, 23:25

Opa ... ;)

É uma seqüência de caracteres em notação hexadecimal utilizada em expressões regulares. Para mais informações: PHP Manual - Types - Strings ;)

Neste caso, representaria os caracteres ASCII extendidos, que vão do 128 ao 255 na tabela ASCII. (y)

[]’s :DAté mais




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq