Tekst criptie maken zoals dit : Vlgones een oznrdeeok op een Eglnese

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Wouterjan Muchu

Wouterjan Muchu

30/04/2011 20:18:14
Quote Anchor link
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?
 
PHP hulp

PHP hulp

19/04/2024 14:20:32
 
Noppes Homeland

Noppes Homeland

30/04/2011 21:05:07
Quote Anchor link
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.
 
Wouterjan Muchu

Wouterjan Muchu

30/04/2011 21:25:17
Quote Anchor link
Ik heb nu dit:

Maar dit haalt alleen de eerste en laatste letters weg. En het werkt niet eens. :(
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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);
}

Kun je klein beetje op weg helpen? Dat ik daarmee weer verder kan?
tnx alvast
 
Noppes Homeland

Noppes Homeland

30/04/2011 21:35:16
Quote Anchor link
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
 
Wouterjan Muchu

Wouterjan Muchu

30/04/2011 21:51:41
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
if ($waarde == 4) {
$words = explode(' ',$tekst);



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
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
$str = $words;

$first = $str{0};
maar dat werkt helaas niet
 

30/04/2011 21:52:00
Quote Anchor link
Als je gewoon dit doet:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
function hussle($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
}
?>


En dan:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo hussle("namen");
?>


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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$array
= explode(" ", "Dit is mijn prachtige zinnetje");
$words = array();

foreach($array as $word) {
$words[] = hussle($word);
}


$string = implode(" ", $words);

echo $string;
?>


Niet getest, maar volgens mij klopt het wel.
 
Wouterjan Muchu

Wouterjan Muchu

30/04/2011 21:58:18
Quote Anchor link
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
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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);



}

Maar is er een mogelijkheid ze weer terug te zetten na het husselen?
 
KevenH H

KevenH H

01/05/2011 14:15:21
Quote Anchor link
Waarom zou je ze weg willen halen en terug plaatsen?
 
Wouterjan Muchu

Wouterjan Muchu

01/05/2011 14:19:16
Quote Anchor link
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.
 
KevenH H

KevenH H

01/05/2011 21:57:25
Quote Anchor link
Op die manier.
 
Martijn B

Martijn B

01/05/2011 22:27:03
Quote Anchor link
Hierbij een test scriptje.

Ik heb alleen het 1e bericht gelezen.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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;

?>
Gewijzigd op 01/05/2011 22:41:41 door Martijn B
 
Pim -

Pim -

01/05/2011 22:34:39
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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);
}

?>

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 -
 
Wouterjan Muchu

Wouterjan Muchu

01/05/2011 22:54:09
Quote Anchor link
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.
Gewijzigd op 01/05/2011 23:01:37 door Wouterjan Muchu
 
Pim -

Pim -

01/05/2011 23:04:13
Quote Anchor link
Als het goed is doet mijn versie die dingen goed.
 
Wouterjan Muchu

Wouterjan Muchu

01/05/2011 23:14:12
Quote Anchor link
Oke, ik probeer hem nu even in het script te zetten.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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;
}

Maar nu mis ik ergens een ; of een }
Maar ik zie niet waar het fout staat?
 
Pim -

Pim -

01/05/2011 23:16:21
Quote Anchor link
Als je een string wil vervormen, doe gewoon ftincoucn($str)
 
Wouterjan Muchu

Wouterjan Muchu

01/05/2011 23:19:57
Quote Anchor link
Dit is waar de tekst binnenkomt $tekst = $_POST["invoer"];
Dat moet dus de string worden.
 
Pim -

Pim -

01/05/2011 23:20:56
Quote Anchor link
echo ftincoucn($_POST["invoer"]);

Verdiep je eens in de PHP basics
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.