PHP str_replace probleem
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
$test = 'hallo';
$alfa = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
$numr = array('00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31', '32', '33', '34', '35');
echo str_replace($alfa, $numr, $test);
?>
$test = 'hallo';
$alfa = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
$numr = array('00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31', '32', '33', '34', '35');
echo str_replace($alfa, $numr, $test);
?>
Dit is mijn code en zoals je ziet is het gemaakt om alle karakters in een zin te vervangen door een cijfer code a word 01. Maar op een of andere manier werkt dit niet. Ik snap niet wat de fout is.
Kan iemand mij helpen?
ps. Als ik dit uitvoer echoed hij dit: 'x43w83w83w83w83w86'
Gewijzigd op 01/01/1970 01:00:00 door Mathijs Henquet
Ik denk dat ie $test ziet als 1 woord, en niet als losse letters. Dus die zul je eerst moeten ontleden.
Hm ik denk niet dat dat het probleem is aangezien er geen spaces in mijn zoek array staan.
Als je bijvoorbeeld een 'a' converteert komt er '01' uit, die '0' en die '1' worden vervolgens ook weer geconverteerd en dat gaat zo even verder. Daardoor krijg je een foute uitkomst, hoe dit op te lossen is weer ik helaas niet.
str_replace() vervangt alle items uit array $search door het item met dezelfde key uit array $replace. Het is een beetje moeilijk uit te leggen, maar dit zegt de manual:
Replace all occurrences of the search string with the replacement string
Je hoeft dus niet $test te strippen per letter.
gewoon foreach gebruiken voor die array's en dan die str_replacen?
Hmm okay my bad:P
Ik heb ooit 's een soort gelijk iets gemaakt als soort sleutel opdracht. mischien dat je hier wat mee kunt:
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
$getal = strlen($_POST['woord']);
$woord = $_POST['woord'];
$loop=0;
$array = array(22 => "a",
74 => "b",
82 => "c",
12 => "d",
64 => "e",
88 => "f",
26 => "g",
98 => "h",
16 => "i",
66 => "j",
32 => "k",
44 => "l",
18 => "m",
58 => "n",
60 => "o",
92 => "p",
62 => "q",
86 => "r",
36 => "s",
24 => "t",
46 => "u",
30 => "v",
52 => "w",
48 => "x",
46 => "y",
68 => "z");
$tel = 0;
while($loop <= $getal){
foreach($array as $key => $value){
if($woord{$loop} == $value){
$code = $key;
echo $code;
}
}
$tel++;
$loop++;
}
$woord = $_POST['woord'];
$loop=0;
$array = array(22 => "a",
74 => "b",
82 => "c",
12 => "d",
64 => "e",
88 => "f",
26 => "g",
98 => "h",
16 => "i",
66 => "j",
32 => "k",
44 => "l",
18 => "m",
58 => "n",
60 => "o",
92 => "p",
62 => "q",
86 => "r",
36 => "s",
24 => "t",
46 => "u",
30 => "v",
52 => "w",
48 => "x",
46 => "y",
68 => "z");
$tel = 0;
while($loop <= $getal){
foreach($array as $key => $value){
if($woord{$loop} == $value){
$code = $key;
echo $code;
}
}
$tel++;
$loop++;
}
Ja klopt je hebt helemaal gelijk. Stom dat ik dat zelf niet zag. Bedankt voor de hulp.
@tommy
hum... Ik ben nogal noob hiermee. Ik weet niet echt hoe ik 2 arrays tegelijk moet foreachen. Zou je dat even kunnen uitleggen misschien?