Tekst criptie maken zoals dit : Vlgones een oznrdeeok op een Eglnese
Hoe maak ik dat ik een tekst die ingevoerd is zo verander dat van elk woord de eerste en de laatste letter goed staan. En dat de letters daartussen in willekeurige volgorde staan? Hoe zou ik dit kunnen maken?
Dat moet je toch zelf kunnen bedenken?!!
Probeer eens iets, en kom dan eventueel terug met vragen over je code die je inelkaar geflanst hebt.
Probeer eens iets, en kom dan eventueel terug met vragen over je code die je inelkaar geflanst hebt.
Ik heb nu dit:
Maar dit haalt alleen de eerste en laatste letters weg. En het werkt niet eens. :(
Kun je klein beetje op weg helpen? Dat ik daarmee weer verder kan?
tnx alvast
Maar dit haalt alleen de eerste en laatste letters weg. En het werkt niet eens. :(
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
if ($waarde == 4) {
$tekst = strrev($tekst);
$words = explode(' ',$tekst);
// reverse the array of words
$words = substr($words,0,-1);
$words = substr($words,1,1);
// rebuild the string
$tekst = join(' ',$words);
}
$tekst = strrev($tekst);
$words = explode(' ',$tekst);
// reverse the array of words
$words = substr($words,0,-1);
$words = substr($words,1,1);
// rebuild the string
$tekst = join(' ',$words);
}
Kun je klein beetje op weg helpen? Dat ik daarmee weer verder kan?
tnx alvast
Wat ik in jouw openings post heb gelezen:
stap 1: verkrijg alle worden in 1 array
stap 2: fiets door deze array heen
stap 3: roep functie aan
stap 3.1: bepaal 1ste en en laatste letter
stap 3.2: bepaal de letters die zitten tussen 1ste en laatste
stap 3.3: doe iets met het resultaat van 3.3
stap 3.4: zet resultaat van 3.1 bij het resultaat van 3.3
stap 3.5: geef resultaat van stap 3.4 terug
stap 4: alle woorden gehad, bouw de zin op
stap 1: verkrijg alle worden in 1 array
stap 2: fiets door deze array heen
stap 3: roep functie aan
stap 3.1: bepaal 1ste en en laatste letter
stap 3.2: bepaal de letters die zitten tussen 1ste en laatste
stap 3.3: doe iets met het resultaat van 3.3
stap 3.4: zet resultaat van 3.1 bij het resultaat van 3.3
stap 3.5: geef resultaat van stap 3.4 terug
stap 4: alle woorden gehad, bouw de zin op
Ik kom eerlijk gezegd niet verder dan dit. Heb nu dus de losse woorden in een array. Via google kan ik tot nu toe ook niks vinden wat mij verder kan helpen.
Ik had ook nog dit maar dat werkt helaas niet
Als je gewoon dit doet:
En dan:
Dat was niet zo moeilijk toch?
Ik snap je script zowiezo niet... Je wou dat het midden "willekeurig" gehusseld word dus waarom strrev? Dat draait het alleen om... En die explode is ook niet nodig..
Toevoeging op 30/04/2011 21:55:11:
O en voor en zin word het uiteraard zo:
Niet getest, maar volgens mij klopt het wel.
Code (php)
En dan:
Dat was niet zo moeilijk toch?
Ik snap je script zowiezo niet... Je wou dat het midden "willekeurig" gehusseld word dus waarom strrev? Dat draait het alleen om... En die explode is ook niet nodig..
Toevoeging op 30/04/2011 21:55:11:
O en voor en zin word het uiteraard zo:
Code (php)
Niet getest, maar volgens mij klopt het wel.
Die strrev was van ander script. Die had ik later al uit gehaald inderdaad. Maar bedoeling is dat er een tekst kan worden ingevoerd waarvan de woorden op die manier worden veranderd.
Dus dat 'hallo dit is een voorbeeld zin;
'hlalo dit is een vbeorlobed zin' word
Maar ik ga even kijken of het nu gaat lukken. Thnx
Toevoeging op 30/04/2011 22:02:06:
Bedankt het werkt nu inderdaad. Ik ga even precies kijken hoe het werkt. En kijken of ik het daarna soort gelijk kan scripten om te oefenen. En kijken of het me lukt om zelf te maken dat hij leestekens niet mee rekent als laatste teken. Thanx
Toevoeging op 01/05/2011 14:14:09:
Hey,
Ik heb nu met dit dat alle leestekens eruit worden gehaald
Maar is er een mogelijkheid ze weer terug te zetten na het husselen?
Dus dat 'hallo dit is een voorbeeld zin;
'hlalo dit is een vbeorlobed zin' word
Maar ik ga even kijken of het nu gaat lukken. Thnx
Toevoeging op 30/04/2011 22:02:06:
Bedankt het werkt nu inderdaad. Ik ga even precies kijken hoe het werkt. En kijken of ik het daarna soort gelijk kan scripten om te oefenen. En kijken of het me lukt om zelf te maken dat hij leestekens niet mee rekent als laatste teken. Thanx
Toevoeging op 01/05/2011 14:14:09:
Hey,
Ik heb nu met dit dat alle leestekens eruit worden gehaald
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
if ($waarde == 4) {
function hussle($string)
{
$string = preg_replace('/[^a-z0-9]/i', '', $string);
$middle = str_shuffle(substr($string, 1, -1)); //Haalt 1e en laatste letter weg
return substr($string, 0, 1).$middle.substr($string, -1, strlen($string)); //Voeg de 1e letter, het midden en de laatste letter toe
}
$array = explode(" ", "$tekst");
$words = array();
foreach($array as $word) {
$words[] = hussle($word);
}
$tekst = implode(" ", $words);
}
function hussle($string)
{
$string = preg_replace('/[^a-z0-9]/i', '', $string);
$middle = str_shuffle(substr($string, 1, -1)); //Haalt 1e en laatste letter weg
return substr($string, 0, 1).$middle.substr($string, -1, strlen($string)); //Voeg de 1e letter, het midden en de laatste letter toe
}
$array = explode(" ", "$tekst");
$words = array();
foreach($array as $word) {
$words[] = hussle($word);
}
$tekst = implode(" ", $words);
}
Maar is er een mogelijkheid ze weer terug te zetten na het husselen?
Waarom zou je ze weg willen halen en terug plaatsen?
Dat is toch logisch? Eerst worden ze weg gehaald, dan wordt er per woord 1e en laatste letter bewaard en rest gehusseld. Dan word het woord weer gefixt. En dan wil ik dat de leestekens die er stonden weer terug gezet worden.
Op die manier.
Hierbij een test scriptje.
Ik heb alleen het 1e bericht gelezen.
Ik heb alleen het 1e bericht gelezen.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
$sString = 'De kat krapt de krullen van de trap, ja echt!';
if( preg_match_all('/[a-z0-9_-]{4,}/i', $sString, $aMatch) )
{
$aMatch[0] = array_unique($aMatch[0]);
$aReplace = array();
//print_r($aMatch[0]);
foreach( $aMatch[0] as $sWord )
{
$aReplace[] = $sWord[0] . str_shuffle(substr($sWord, 1, -1)) . $sWord[ strlen($sWord) - 1];
}
$sStringNew = str_replace($aMatch[0], $aReplace, $sString);
}
echo '$sString: ' , $sString ,
'<br />$sStringNew: ' , $sStringNew;
?>
$sString = 'De kat krapt de krullen van de trap, ja echt!';
if( preg_match_all('/[a-z0-9_-]{4,}/i', $sString, $aMatch) )
{
$aMatch[0] = array_unique($aMatch[0]);
$aReplace = array();
//print_r($aMatch[0]);
foreach( $aMatch[0] as $sWord )
{
$aReplace[] = $sWord[0] . str_shuffle(substr($sWord, 1, -1)) . $sWord[ strlen($sWord) - 1];
}
$sStringNew = str_replace($aMatch[0], $aReplace, $sString);
}
echo '$sString: ' , $sString ,
'<br />$sStringNew: ' , $sStringNew;
?>
Gewijzigd op 01/05/2011 22:41:41 door Martijn B
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
function ftinoucn($str) {
return preg_replace_callback('/\b\w{4,}\b/i', function($matches) {
$start = substr($matches[0], 0, 1);
$end = substr($matches[0], -1);
$middle = substr($matches[0], 1, -2);
return $start.str_shuffle($middle).$end;
}, $str);
}
?>
function ftinoucn($str) {
return preg_replace_callback('/\b\w{4,}\b/i', function($matches) {
$start = substr($matches[0], 0, 1);
$end = substr($matches[0], -1);
$middle = substr($matches[0], 1, -2);
return $start.str_shuffle($middle).$end;
}, $str);
}
?>
Weet niet of hij precies werkt. De substr's en de regex kloppen mss niet helemaal.
Gewijzigd op 01/05/2011 23:03:53 door Pim -
Bedankt beide! Maar klopt het dat beide script zonder de leestekens bewaarfunctie is?
edit: ik heb nog een probleempje. Van een één letter woord maakt hij er nu 2 van. Omdat hij die letters zowel als de eerste als de laatste letter ziet.
edit: ik heb nog een probleempje. Van een één letter woord maakt hij er nu 2 van. Omdat hij die letters zowel als de eerste als de laatste letter ziet.
Gewijzigd op 01/05/2011 23:01:37 door Wouterjan Muchu
Als het goed is doet mijn versie die dingen goed.
Oke, ik probeer hem nu even in het script te zetten.
Maar nu mis ik ergens een ; of een }
Maar ik zie niet waar het fout staat?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
if ($waarde == 5) {
$str = $tekst;
function ftinoucn($str) {
return preg_replace_callback('/\b\w{4,}\b/i', function($matches) {
$start = substr($matches[0], 0, 1);
$end = substr($matches[0], -1);
$middle = substr($matches[0], 1, -2);
return $start.str_shuffle($middle).$end;
}, $str);
}
$tekst = $str;
}
$str = $tekst;
function ftinoucn($str) {
return preg_replace_callback('/\b\w{4,}\b/i', function($matches) {
$start = substr($matches[0], 0, 1);
$end = substr($matches[0], -1);
$middle = substr($matches[0], 1, -2);
return $start.str_shuffle($middle).$end;
}, $str);
}
$tekst = $str;
}
Maar nu mis ik ergens een ; of een }
Maar ik zie niet waar het fout staat?
Als je een string wil vervormen, doe gewoon ftincoucn($str)
Dit is waar de tekst binnenkomt $tekst = $_POST["invoer"];
Dat moet dus de string worden.
Dat moet dus de string worden.
echo ftincoucn($_POST["invoer"]);
Verdiep je eens in de PHP basics
Verdiep je eens in de PHP basics




