我想创建一个莫尔斯电码到文本和文本到莫尔斯电码转换器。
我的代码:
$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;
}
样本输入:
....。 .- .. .- .. --- .-- --- .-。 .- .. - ..
输出样本:
他ED超低owor版d
预期输出:
你好世界国际
我的问题是w母鸡从莫尔斯电码转换为文本某些字符由于str_replace限制不能正确捕获,因为它将替换所有类似于针的字符串,所以如果我必须全部替换“。”。到e它也会改变“......”,这实际上应该是一个h。
任何帮助,将不胜感激。
谢谢。