php - 如何在以下示例中的单词之间添加适当的空格 - PHP
问题描述
我有以下代码,我将数字转换为字符串并输出一个句子。单词用“+”号分隔。
例如,对于字符串'16 8 16+20 5 19 20',输出应该是PHP TEST。但我得到的输出是PHP T EST。谁能告诉我我该怎么做?谢谢。
<?php
class NumbersToText
{
public static function numbersToLetters($string)
{
$arr = [
'A' => 1,
'B' => 2,
'C' => 3,
'D' => 4,
'E' => 5,
'F' => 6,
'G' => 7,
'H' => 8,
'I' => 9,
'J' => 10,
'K' => 11,
'L' => 12,
'M' => 13,
'N' => 14,
'O' => 15,
'P' => 16,
'Q' => 17,
'R' => 18,
'S' => 19,
'T' => 20,
'U' => 21,
'V' => 22,
'W' => 23,
'X' => 24,
'Y' => 25,
'Z' => 26,
];
$input = explode(' ', $string);
foreach ($input as $numval)
{
if (preg_match('/^[\d]+$/i', $numval))
{
echo array_search($numval, $arr);
}
if (strpos($numval, '+') !== FALSE)
{
$word = str_replace('+', ' ', $numval);
$wordbreak = explode(' ', $word);
foreach ($wordbreak as $split)
{
echo array_search($split, $arr);
echo " ";
}
}
}
}
}
echo NumbersToText::numbersToLetters('16 8 16+20 5 19 20');
解决方案
您可以改为在“+”上爆炸,如果您翻转数组,输出字符会更容易。
$arr = array_flip($arr);
$str = '16 8 16+20 5 19 20';
$words = explode("+", $str);
foreach($words as $word){
$chrs = explode(" ", $word);
foreach($chrs as $chr){
echo $arr[$chr]; // echo the character
}
// Word ends, add space
echo " ";
}
//PHP TEST
推荐阅读
- c++ - g++:未定义引用`_imp___ZN5pluma13Plxxxx
- json - 无法让 Karaf 4.2.6 使用带有 JsonLayout 的 log4j2 记录布局类型
- ruby - Rails 未从 CSV 读取特定列
- virtual-machine - 由 Jack 中的 getter mwthod 导致 VMEmulator 中的“段空间不足”错误
- r - 如何解决我在使用 inner_join 函数时遇到的这个错误?
- javascript - 每次单击按钮时如何创建一个新的 DIV?
- ios - 更新 SwiftUI 视图大小以匹配图像
- java - 如何在java中添加2个文本文件的内容
- android - Firebase startAt 在检索数据时返回 null
- azure - 从 Azure DevOps yaml 设置应用服务应用程序设置