PHP数组/ preg_replace的位置

时间:2013-01-28 11:10:27

标签: php arrays replace position

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

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

到目前为止,我使用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
}

我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

你正在尝试这个: -

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

输出: - HelloHelloHello

答案 1 :(得分: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";
        }
    }

<强>输出:

  

你好一个你好两个你好三个

DEMO