Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

andrepcg

Sortear uma string

Mensagens Recomendadas

andrepcg

peço ajuda para isto.

preciso de uma função em que dada uma string inicial (por exemplo "ola:adeus") ele gera uma nova string mas com base na inicial.

por exemplo que ele transforme "ola:adeus" em "0la:Ad3uS". ou em "oLA:ADEUS", ou em "o7-A:aDE*u5"

estão a perceber?

peço ajuda pq nao estou a ver a melhor maneira de fazer isto. pq eu nao quero que ele apenas transforme em L33T, ou que ponha maisculas. queria que ele fizesse quase tudo o que há para fazer. algumas letras em l33t, algumas letras maiusculas, adicionar random chars distribuidos aleatoriamente, e mais qq coisa que vocês se lembrem. mas nao quero que ele faça sempre todos de uma vez. por vezes faz só l33t, outras vezes l33t e random chars, outras vezes algumas letras maiusculas, etc...

conseguem ajudar?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
andrepcg

ok, mas preciso de uma ajuda mais completa. ainda nao trabalho muito com php e passar algumas coisas de palavras para PHP é dificil.

se me conseguires indicar um ponto de partida, era excelente até pq nao sou ainda muito bom a trabalhar com arrays

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
helt

<?php
if(!empty($_POST['string'])){ // vês se o formulário foi correctamente submetido
/* podes fazer aqui um htmlentities para proteger a variável, mas isso pode
afectar a funcionalidade do script, portanto depois vês isso =P */
$string=strtolower($_POST['string']);

//fazes um array para cada letra
$char['a']=array('4','a');
$char['b']=array('b','|o');
//... até ao z

// isto vai fazer um novo array com os caracteres da string
$stringchars= preg_split('//', $string, -1);

$strfinal='';

foreach($stringchars as $stringchar){

/*
Por cada letra vai-se ao array $char buscar um equivalente
O round gera uma chave do array aleatóriamente
O count conta os elementos existentes no array $char, para dar 
um limite máximo ao rand
*/
$strfinal.= $char[$stringchar][rand(0,count($char[$stringchar])];
}
echo $strfinal;
}

else{
echo 'Entre com algum texto antes de submeter o formulário';
exit();
}

Espero ter ajudado!  :D


––––•(-• [ ђєlt ] •-)•––––

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
andrepcg

excelente, agradeço imenso. uma coisa. passa-se qq coisa pq nao está a funcionar bem.

"Parse error: syntax error, unexpected ']' in C:\xampp\htdocs\md5_decrypt\char.php  on line 48"

<?php

$string=strtolower($_GET['str']);

//fazes um array para cada letra
$char['a']=array('4','a','A');
$char['b']=array('b','|o','B','8');
$char['c']=array('c','C','(');
$char['d']=array('d','D','|)');
$char['e']=array('e','E','3');
$char['f']=array('f','F','|-');
$char['g']=array('G','g');
$char['h']=array('h','H','|-|');
$char['i']=array('i','I','1','8');
$char['j']=array('J','j');
$char['k']=array('k','K','|/');
$char['l']=array('l','L','|_','1');
$char['m']=array('m','M','|\/|');
$char['n']=array('n','N','|\|');
$char['o']=array('o','O','0');
$char['p']=array('p','P','|º');
$char['q']=array('q','Q','0.');
$char['r']=array('r','R');
$char['s']=array('s','S','5');
$char['t']=array('T','t');
$char['u']=array('u','U','|_|');
$char['v']=array('v','V','\/');
$char['x']=array('x','X');
$char['w']=array('w','W','\A/');
$char['y']=array('y','Y');
$char['z']=array('Z','z','2');

//... até ao z

// isto vai fazer um novo array com os caracteres da string
$stringchars= preg_split('//', $string, -1);

$strfinal='';

foreach($stringchars as $stringchar){

/*
Por cada letra vai-se ao array $char buscar um equivalente
O round gera uma chave do array aleatóriamente
O count conta os elementos existentes no array $char, para dar
um limite máximo ao rand
*/
$strfinal.= $char[$stringchar][rand(0,count($char[$stringchar])];
}
echo $strfinal;

?>

na linha 48 está $strfinal.= $char[$stringchar][rand(0,count($char[$stringchar])];

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
helt

faltou fechar o rand(), substitui por isto:

$strfinal.= $char[$stringchar][rand(0,count($char[$stringchar]))];


––––•(-• [ ђєlt ] •-)•––––

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.