Php textarea
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)
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
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;
}
}
}
$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
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
24
25
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;
?>
$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
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.