PHP检测和替换

PHP检测和替换,php,Php,您能告诉我如何从字符串中检测int,然后用一个值替换每个int吗? 例如,我在数据库中有一个“1;5;81;2”,我想用一个特定的值替换每个数字,例如,我想得到一个结果“obzq” 有办法做到这一点吗?谢谢创建一个包含键值对的数组,其中键是数字,值是对应的字母。然后在字符串上使用php函数explode()和数字,并在数组中循环使用相应的字母替换数字 例如: $numberLetterArray = array( 1 => 'o', 2 => 'q', 5 =

您能告诉我如何从字符串中检测int,然后用一个值替换每个int吗? 例如,我在数据库中有一个“1;5;81;2”,我想用一个特定的值替换每个数字,例如,我想得到一个结果“obzq”
有办法做到这一点吗?谢谢

创建一个包含键值对的数组,其中键是数字,值是对应的字母。然后在字符串上使用php函数explode()和数字,并在数组中循环使用相应的字母替换数字

例如:

$numberLetterArray = array(
    1 => 'o',
    2 => 'q',
    5 => 'b',
    81 => 'z',
);

$string = '1;5;81;2';

// Creates an array of only the numbers
$numbers = explode(';', $string);

foreach($numbers as $n)
{
    foreach($numberLetterArray as $number=>$letter)
    {
        if($number == $n)
        {
            $output .= $letter.' ';
        }
    }
}

// Remove the space at the end
$output = trim($output);

它应该输出“obzq”。

使用
strtr
函数尝试了几乎所有的方法,问题是int的数量不准确,并且没有定义模式。。看到了吗?我试过了,但问题是它并不总是1 2 5 81和o q b z你在哪里引用字母和数字之间的关系?数字是ID,字母是每个idOk对应的用户名,所以概念还是一样的,但是,与通过$numberLetterArray循环的foreach循环不同,您将有一个通过数据库结果循环的循环。因为您为已知int指定了值,这使得它对于我给出的示例是特定的,但对于其他情况则不是。