再会,
我正在尝试创建一个莫尔斯电码到文本和文本到莫尔斯电码转换器。
我的代码:
$letter = str_split(strtolower($_POST['text']));
$morse = $_POST['morse'];
$morsecmp = explode(" ",$morse);
$letter = implode(" ",$letter);
$mode = $_POST['sub'];
$morsecode = array(".-","-...","-.-.","-..","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",
".--.","--.-",".-.","...","-.","..-","...-",".--","-..-","-.--","--..",".");
$letters = array("a","b","c","d","f","g","h","i","j","k","l","m","n","o","p","q","r",
"s","t","u","v","w","x","y","z","e");
if($mode == "Text to Morse Code"){
$letter = str_replace($letters,$morsecode,$letter);
$translated = $letter;
}else{
for($x=0;$x<sizeof($letters);$x++){
for($y=0;$y<sizeof($morsecmp);$y++){
if($morsecode[$x] === $morsecmp[$y]){
echo $morsecode[$x]." === ".$letters[$x]."<br>";
$morse = str_replace($morsecode[$x],$letters[$x],$morse);
}
}
}
$translated = $morse;
}
样本输入:
...... .-.. .-.. --- .-- --- .-. .-.. -..
样本输出:
他应得的
预期输出:
你好世界
我的问题是,当从莫尔斯电码转换为文本时,由于 str_replace 限制,某些字符没有被正确捕获,它将替换所有类似于针的字符串,所以如果我必须替换所有“。” 到 e 它也会改变 "...." 这实际上应该是一个 h。
对此的任何帮助将不胜感激。
谢谢你。