首页 > 解决方案 > 如何在以下示例中的单词之间添加适当的空格 - 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');

标签: php

解决方案


您可以改为在“+”上爆炸,如果您翻转数组,输出字符会更容易。

$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

https://3v4l.org/emQS8


推荐阅读