Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php数组中用单词中的多个实例替换字母一次_Php_Arrays_Replace_Strtr - Fatal编程技术网

在php数组中用单词中的多个实例替换字母一次

在php数组中用单词中的多个实例替换字母一次,php,arrays,replace,strtr,Php,Arrays,Replace,Strtr,我已经在php/mysql中创建了一个文字游戏,在这个游戏中,用户会看到一个随机选择的外语单词,然后必须填写缺失的字母(根据单词长度,有时会随机删除,有时会删除所有字母)从这些单词的英文版本输入表单输入字段,然后通过表单提交到数据库进行检查 下面的代码可以正常工作,除非一个单词有一个以上的特定字母实例,例如单词“Bees” 例如,它将遍历find“e”,然后将字母“e”的两个实例都替换为 <input type="text" name="question_1_letter_1" class

我已经在php/mysql中创建了一个文字游戏,在这个游戏中,用户会看到一个随机选择的外语单词,然后必须填写缺失的字母(根据单词长度,有时会随机删除,有时会删除所有字母)从这些单词的英文版本输入表单输入字段,然后通过表单提交到数据库进行检查

下面的代码可以正常工作,除非一个单词有一个以上的特定字母实例,例如单词“Bees”

例如,它将遍历find“e”,然后将字母“e”的两个实例都替换为

<input type="text" name="question_1_letter_1" class="inputs" maxlength="1" value="" />
         or 
<input type="text" name="question_1_letter_2" class="inputs" maxlength="1" value="" />
我真正想要的是,一旦找到第一个“e”,它就替换掉一个字母“e”的实例

<input type="text" name="question_1_letter_1" class="inputs" maxlength="1" value="" />

另一个实例被替换为

<input type="text" name="question_1_letter_2" class="inputs" maxlength="1" value="" />

这是主要代码

    $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;
$one=“问题1字母1”;
$two=“问题1字母2”;
$three=“问题1字母3”;
$four=“问题1字母4”;
$string=蜜蜂;
$selected_letter1=B;
$selected_letter2=e;
$selected_letter3=e;
$selected_letter4=s;
$Find=数组($selected\u letter1,$selected\u letter2,$selected\u letter3,$selected\u letter4);
$Replace=数组(
"``",
"``",
"``",
"``"
);
$New_string=strtr($string,array_combine($Find,$Replace));
echo$New_字符串;

希望这有意义!我仍然是一个非常初级的php程序员,一直在思考如何实现这一点,很可能忽略了一个更简单的解决方案,而我目前还不知道这个解决方案。。。如果有人能帮我一把,给我一些建议,我将不胜感激

strpos
可用于定位字符的第一个匹配项。感谢您抽出时间对其进行评论,我将继续了解strpos。。。虽然字母有时会从单词中随机删除,但字符串中的位置并不是恒定的,所以不太确定如何处理。。。是否有一种方法可以根据preg_replace(“/abc/”、“123”、$str,1)对其进行限制;