je voudrais brouiller tous les a-zA-Z donc un monde commelettres php embrouillage
bonjour devient shrxs ou bhidf
le reste doit rester le même. par ex. "Bonjour tout le monde!" = "ksgii fishl!"
etc.
je voudrais brouiller tous les a-zA-Z donc un monde commelettres php embrouillage
bonjour devient shrxs ou bhidf
le reste doit rester le même. par ex. "Bonjour tout le monde!" = "ksgii fishl!"
etc.
On ne sait pas si cela est destiné à être réversible, voici donc deux réponses alternatives. "Hello" devenir "shrxs" implique un schéma qui va au-delà de la simple substitution (un caesar cipher) et peut-être quelque chose comme un chiffre polyalphabétique.
Mais pour un chiffre simple caesar vous pouvez utiliser strtr
$plain="hello";
$cipher = strtr($plain,
"abcdefghijklmnopqrstuvwxyz",
"tuvhijkcwxyzldefgsmnopqrab");
echo $cipher;
afficherait "cizze";
Si vous n'avez pas besoin d'inverser le brouillage, et que vous voulez quelque chose de vraiment aléatoire, essayez cette
function random_char($matches)
{
return chr(rand(ord('a'),ord('z')));
}
$plain="hello";
$random=preg_replace_callback(
"{[a-z]}i",
"random_char",
$plain);
echo $random;
Ici, nous utilisons preg_replace_callback pour avoir chaque CHAR remplacé par une alternative au hasard par le rappel random_char.
+1 strstr peut faire n'importe quel chiffrement de substitution simple (pour ce que ça vaut qui n'est pas beaucoup) – cletus
Que voulez-vous dire par «brouillage»? Je peux voir que vous ne réarrangez pas ou ne comptez pas les lettres à travers l'alphabet.
Il semble que vous vouliez simplement savoir comment remplacer uniquement les caractères a-zA-Z. Donc, quel que soit votre fonction de transformation peut-être, c'est une façon, vous pouvez le faire:
$result = preg_replace_callback('/[a-zA-Z]/', 'charTransform', $oldstring);
Définissez ensuite la transformation comme un rappel:
function charTransform($matches) {
$oldchar = $matches[0];
return strtolower($oldchar); // replace with whatever you want
}
Battu à nouveau! –
La question est, voulez-vous que le texte brouillé ou crypté, c'est-à-dire le texte devrait-il être déchiffrable ou non? Si vous voulez juste toutes les lettres remplacées par une autre lettre au hasard, vous pouvez essayer quelque chose comme ceci:
$text = "Hello world!\n";
$text = preg_replace_callback(
'/[a-zA-Z]/',
create_function('$matches', 'return chr(rand(97,122));'),
$text
);
Vous aimerez aussi regarder la fonction str_rot13, qui a l'avantage d'être réversible aussi.
<?php
var $foo = "hello world!";
var $bar = str_rot13($foo); // $bar equals "uryyb jbeyq!"
var $baz = str_rot13($bar); // $baz equals "hello world!"
?>
La chose importante à considérer est de savoir à quoi vous voulez brouiller le texte, et ce que vous voulez en faire par la suite. Par exemple, faut-il pouvoir le déchiffrer? Ou devrait-il devenir simplement un texte aléatoire et indéchiffrable? – Ben
pouvez-vous être plus concret, voulez-vous brouiller systématiquement ou totalement aléatoire? – markus