Php textarea

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Mr Beronne

Mr Beronne

01/10/2013 21:59:49
Quote Anchor link
Beste lezers,

Ik ben bezig met een opdracht om meer functies van php te leren maar
kom er niet uit.

De opdracht is als volgt:
Ontwikkel een PHP pagina waarmee in een textarea een stuk tekst (woorden, gescheiden door spaties) kan worden ingevoerd. Als resultaat worden alle woorden uit de tekst getoond (één woord per regel), waarbij in de woorden van tenminste vier letters de eerste en laatste letter zijn verwisseld.

Ik zal mijn code weergeven uit uitleggen en zeggen waar ik vast loop.

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
        if (isset($_POST["submit"])) {
            $explode = explode(" ", $_POST["tekst"]);

            foreach ($explode as $key => $value) {
                // counter value
                $counter = strlen($value);
                // Check als counter < of > = dan 4
                if ($counter < 4) {
                    echo $value;
                } else {
                    // Functie
                    $firstChr = substr($value, 0, 1);
                   $lastChr = substr(strrev($value), 0, 1);

                    // Final word
                    $finalWord = "";
                    $finalWord = str_replace($lastChr, $firstChr, $value);
                    $finalWord = str_replace($firstChr, $lastChr, $finalWord);
                    
                    echo $finalWord;
                }
            }
        }

Ik test de code telkens met het word voetbal

Doormiddel van een formulier in html post ik de waarde van de textarea. Die
explode ik doormiddel van "leegruimte". Daarna start ik de foreach om de array
waardes in een string te zetten. Nu ga ik de string tellen "voetbal" heeft meer dan 4 tekens
dus hier moeten we andere dingen mee doen zie opdracht en ga ik dus naar de else;

ik moet eest weten wat het eeste teken is dat doe ik doormiddel van $firstChr en zo
ook voor het laatste teken omdat ik deze moet omdraaien.
Nu komt het probleem bij // Final word ik krijg het maar niet voor elkaar om van "voetbal" -> "loetbav" te maken.

Ik kijk met de eerste str_replace naar $value = "voetbal" en zoek daarin naar het
laatste teken = l. Die vervang ik voor het eerste teken = v. als ik dit zou echoen krijg ik
voetbav. Nu ga ik naar de tweede str_replace die eigenlijk het omgekeerde moet doen en zoekt in het gemaakte woord voetbav en moet er van maken "loetbav" maar krijg "loetbal" hij pakt op de één of andere reden niet de eerst str_replace.

Wie kan me hier bij helpen.
Zie graag tips en opmerkingen tegemoet.
waardes
Gewijzigd op 01/10/2013 22:03:28 door Mr Beronne
 
PHP hulp

PHP hulp

21/11/2024 23:37:41
 
Frank Nietbelangrijk

Frank Nietbelangrijk

01/10/2013 22:17:19
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
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php

$value
= 'voetbal';

// v -> 0
// o -> 1
// e -> 2
// t -> 3
// b -> 4
// a -> 5
// l -> 6
// strlen($value) geeft 7!


$lastpos = strlen($value) - 1; // 7 - 1 = 6. dat is de l.

$firstChr = substr($value, 0, 1);
$lastChr = substr($value, $lastpos, 1); // niet de hele string omdraaien, dat is niet nodig.

// wijzig de eerste en de laatste karakter van $value

$value[0] = $lastChr;
$value[$lastpos] = $firstChr;

echo $value;

?>


Toevoeging op 01/10/2013 22:25:07:

en nog iets sneller / minder geheugen

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
<?php

$value
= 'voetbal';


$lastpos = strlen($value) - 1; // 7 - 1 = 6. dat is de l.

// swap two variables

$temp = $value[0];
$value[0] = $value[$lastpos];
$value[$lastpos] = $temp;

echo $value;

?>
 
Roel -

Roel -

01/10/2013 22:58:14
Quote Anchor link
Het kan nóg compacter :-)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
$value
= 'voetbal';

$newValue = $value[strlen($value) - 1] . substr($value, 1, strlen($value) - 2) . $value[0];

// loetbav
echo $newValue;
?>
 
Eddy E

Eddy E

02/10/2013 07:54:16
Quote Anchor link
In plaats van het eerst op te slaan in $newValue kan je het ook direct echoën.

Maar je zou dit ook enkel met substr() kunnen oplossen.

Stel, $woord = 'voetbal'
Onthouden van eerste en laatste letter (doe je nu al)
Namelijk de eerste letter weghalen.
Dan de laatste letter weghalen.
Dan de $laatste_letter . $woord . $eerste_letter opslaan/echoën.
 



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.