0

我有一段包含随机数字的文本。

我制作了一个数字数组,对它们进行处理(根据每个数字查找要显示的相关信息),然后将更改后的数组重新插入到原始文本中与我从中获取数组相同的位置。

到目前为止,我正在使用 preg_match_all 创建新数组,然后为进程使用 foreach,然后将这些字符串插入一个名为 $replacement 的新数组中。

所以我有一个数组,我想用它来替换原始文本中的字符串。问题是我希望根据位置值计算替换 - 无论数组中有什么,字符串 1 按数组中的位置匹配字符串 1。

很难解释。这是一个例子。

Original text: Hello 1 Hello 2 Hello 3

original array {
    [0] 1
    [1] 2
    [2] 3
}
replacement array {
    [0] One
    [1] Two
    [2] Three
}

因此,当我做我需要做的事情时,原始正文将如下所示:

Hello One Hello Two Hello Three

Hello One Hello Two Hello Three问题是,即使原始数组是,我也希望它看起来像:

original array {
    [0] 1
    [1] 1
    [2] 1
}
replacement array {
    [0] One
    [1] Two
    [2] Three
}

我怎么能那样做?

4

2 回答 2

1

你在尝试这个吗:-

$original_array=array(1,2,3);
foreach($original_array as $key=>$value) {
  echo str_replace($key, 'Hello',$key);
}

输出:-HelloHelloHello

于 2013-01-28T11:29:37.797 回答
0

这是你要找的……???

$string="Hello 1 Hello 2 Hello 3";
    $rslt=preg_match_all('/(\d)/',$string,$matches);
    foreach ($matches[0] as $key=>$value){
        $digit= $key+1;
        $words=convertToWord($digit);
        $string= str_replace($value,$words,$string);
    }

echo $string;
function convertToWord($digit)
    {
        switch($digit)
        {
            case "0": return "zero";
            case "1": return "one";
            case "2": return "two";
            case "3": return "three";
            case "4": return "four";
            case "5": return "five";
            case "6": return "six";
            case "7": return "seven";
            case "8": return "eight";
            case "9": return "nine";
            case "": return "only";
        }
    }

输出:

你好一 你好二 你好三

演示

于 2013-01-28T15:30:15.990 回答