Replace a letter with multiple instances in a word once in php array

I have created a word game in php/mysql where users are presented with a randomly selected word in a foreign language and then have to fill in missing letters (which depending on the word length are sometimes randomly removed or sometimes all letters are removed) from the english version of these words into form input fields which are later submitted to the database via a form for checking…

The code below works ok except for when a word has more than one instance of a particular letter for examples the word “Bees”

For example it will go through find “e” but then replace both instances of the letter “e” with either

or

What I really want is for it to just replace once the first “e” it finds so one instance of the letter “e” is replaced by

and the other instance is replaced with

here is the main code

$one = "question_1_letter_$key1";
$two = "question_1_letter_$key2";
$three = "question_1_letter_$key3";
$four = "question_1_letter_$key4";
$string = Bees;
$selected_letter1 = B;
$selected_letter2 = e;
$selected_letter3 = e;
$selected_letter4 = s;

$Find = Array($selected_letter1, $selected_letter2, $selected_letter3, $selected_letter4);

$Replace = Array(
<input type=\"text\" name=\"$one\" class=\"inputs\" maxlength=\"1\" value=\"\" />”,
<input type=\"text\" name=\"$two\" class=\"inputs\" maxlength=\"1\" value=\"\" />”,
<input type=\"text\" name=\"$three\" class=\"inputs\" maxlength=\"1\" value=\"\" />”,
<input type=\"text\" name=\"$four\" class=\"inputs\" maxlength=\"1\" value=\"\" />
);

$New_string = strtr($string, array_combine($Find, $Replace));

echo $New_string;

Hope that makes sense! Im still very much a novice php programmer and stuck as to how I can achieve this and may well be overlooking a much simpler solution that I am currently unaware of… if anyone can lend a hand and give me some pointers it would be greatly appreciated!!

Well, Kent, there are many ways to handle this. First, I should mention that you have a lot of code that
uses separate variables for each of the various letters. You might want to consider just using a simple
array instead. There are PHP commands that will take a word such as “Bees” and convert them into one
array of letters as letters(“B”, “e”, “e”, “s”) with indexes of 0, 1, 2, 3… So, it would be easy to set up a
simple loop to parse thru the letters when needed. Just an idea…

For replacing one letter with another, you can use the string replace command. Here is a link that shows
how to use it. Note that you can add in the “COUNT” option and if you set this to “1”, it will only replace
the first instance of that letter. Hope this helps:
http://www.w3schools.com/php/func_string_str_replace.asp
Also, note that under the “More Examples” area, it shows how to replace inside an array which might make
it easier as I explained above.

Hope that helps…

Sponsor our Newsletter | Privacy Policy | Terms of Service