Replace
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?
function server_encode($string)
{
$string = str_replace('a', 'x', $string);
$string = str_replace('b', 'y', $string);
//enz..
$string = str_replace('x', '123', $string);
$string = str_replace('y', '456', $string);
return $string;
}
?>
function server_encode($string)
{
$string = str_replace('a', 'x', $string);
$string = str_replace('b', 'y', $string);
//enz..
$string = str_replace('x', '123', $string);
$string = str_replace('y', '456', $string);
return $string;
}
?>
Hierbij is het de bedoeling dat een "a" word vervangen door een "x". Dus als ik $string vul met "abxy" wil ik dat er uit komt "xy123456". Maar wat nu het probleem is, is dat hij zichzelf gaat replacen, dus komt er uit "123456" want hij replacet de "xy" ook weer. Ik he al van alles geprobeerd maar ik kom er echt niet uit.
Weet iemand hoe dit moet?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?
function server_encode($string)
{
$string = str_replace('x', '123', $string);
$string = str_replace('y', '456', $string);
$string = str_replace('a', 'x', $string);
$string = str_replace('b', 'y', $string);
//enz..
return $string;
}
?>
function server_encode($string)
{
$string = str_replace('x', '123', $string);
$string = str_replace('y', '456', $string);
$string = str_replace('a', 'x', $string);
$string = str_replace('b', 'y', $string);
//enz..
return $string;
}
?>
Zo doet ie het wél.
Ja oke maar het gaat om het hele alfabet en de replace is niet "123" of "456" maar iets van "H8c" dus dat gaat niet.
Dan denk ik dat je dat niet gaat lukken met str_replace().
Ik denk dat je dan stap voor stap het moet doen, dus teken voor teken...
Oke dat kan, ik sta open voor andere opties, dus moe zou het dan moeten volgens jou?
Karl schreef op 18.02.2009 14:09:
Ik denk dat je dan stap voor stap het moet doen, dus teken voor teken...
Dat werkt ook niet. Als je eerst de 'a' in een 'x' verandert dan kom je toch de 'x' weer tegen die er '123' van maakt.
SanThe schreef op 18.02.2009 14:12:
Dat werkt ook niet. Als je eerst de 'a' in een 'x' verandert dan kom je toch de 'x' weer tegen die er '123' van maakt.
Karl schreef op 18.02.2009 14:09:
Ik denk dat je dan stap voor stap het moet doen, dus teken voor teken...
Dat werkt ook niet. Als je eerst de 'a' in een 'x' verandert dan kom je toch de 'x' weer tegen die er '123' van maakt.
Jawel, als je $sReplace hebt, dan doe je strlen en dan bijvoorbeeld als array door de string loopt, en dat weer opslaat in $sReplaced o.i.d.
Dus iets met een for loop of zo? Hoe gaat dat er dan uit zien?
Voorbeeld:
Ik haal hier steeds de voorste van de string af, gooi die in de switch (waar de tekens vervangen worden) en zet ze in een nieuwe string.
De default is om geen teken verloren te laten gaan.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$string = 'Test abcxyz';
$nwString = '';
while($string != '')
{
switch ($string[0])
{
case 'a': $nwString .= 'x'; break;
case 'b': $nwString .= 'y'; break;
case 'x': $nwString .= '123'; break;
case 'y': $nwString .= '456'; break;
default: $nwString .= $string[0];
}
$string = substr($string,1);
}
echo $nwString;
?>
$string = 'Test abcxyz';
$nwString = '';
while($string != '')
{
switch ($string[0])
{
case 'a': $nwString .= 'x'; break;
case 'b': $nwString .= 'y'; break;
case 'x': $nwString .= '123'; break;
case 'y': $nwString .= '456'; break;
default: $nwString .= $string[0];
}
$string = substr($string,1);
}
echo $nwString;
?>
Gewijzigd op 01/01/1970 01:00:00 door TJVB tvb
Perfect het lijkt erop dat dit de oplossing is, ik ga er mee aan de slag!
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
function server_encode($string)
{
$return = '';
$array = array('a'=>'x',
'b'=>'y',
'x'=>'123',
'y'=>'456');
for($i=0; $i<strlen($string); $i++)
{
$return .= (isset($array[$string[$i]])) ? $array[$string[$i]] : $string[$i];
}
return $return;
}
echo server_encode('Test abcxyz');
?>
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
function server_encode($string)
{
$return = '';
$array = array('a'=>'x',
'b'=>'y',
'x'=>'123',
'y'=>'456');
for($i=0; $i<strlen($string); $i++)
{
$return .= (isset($array[$string[$i]])) ? $array[$string[$i]] : $string[$i];
}
return $return;
}
echo server_encode('Test abcxyz');
?>
Gewijzigd op 01/01/1970 01:00:00 door - SanThe -
ja ook bedankt deze onthoud ik en haal er uit wat ik kan gebruiken!
Bij mijn scriptje hoef je alleen het array() aan te passen.
Niet aan gedacht, je hebt alleen met jou manier het probleem dat je zeer veel in het geheugen kunt hebben (ik heb ooit zoiets gebruikt voor zeer grote bestanden.daarom haal ik het teken ook meteen uit de string)