在PHP中获取字符串模式的数组值


Get array value form string pattern in PHP

我假设数组是

Array
(
            [0] => john
            [1] => robinson
            [2] => 27-08-1980
            [3] => football
            [4] => pizza
)

我想使用字符串模式从数组中获取值
示例字符串模式(它也可以使用html代码(:

string = "{0} {1} birthday {2} <br /> Hobbie : {3}  <br /> favorite : {4}"

结果是

john robinson birthday 27-08-1980
Hobbie : football 
favorite : pizza

如何解决

您可以使用vsprintf(),但必须将模板占位符更改为%s。

$data = array(...); // your array
$template = '%s %s birthday %s <br /> Hobbie : %s  <br /> favorite : %s';
$result = vsprintf($template, $data);

使用preg_replace_callback((

$data = [
    0 => 'john',
    1 => 'robinson',
    2 => '27-08-1980',
    3 => 'football',
    4 => 'pizza',
];
$template = "{0} {1} birthday {2} <br /> Hobbie : {3}  <br /> favorite : {4}";
$string = preg_replace_callback(
    '/'{('d+)'}/',
    function ($matches) use ($data) {
        return $data[$matches[1]];
    },
    $template
);
echo $string;

演示

preg_replace_callback将帮助您:

<?php
$array = array('john', 'robinson', '27-09-1980', 'football', 'pizza');
$string = "{0} {1} birthday {2} <br /> Hobbie : {3}  <br /> favorite : {4}";
$pattern = "/'{[0-9]'}/";
$newString = preg_replace_callback($pattern, function($matches) use ($array) {
    return $array[substr($matches[0],1,1)]; 
}, $string);
echo $newString;

以上退货:约翰·罗宾逊生日1980年9月27日

爱好:足球

最爱:披萨

$arr = array('john','robinson','27-08-1980', 'football','pizza');
$str = "{$arr[0]} {$arr[1]} birthday {$arr[2]} <br /> Hobbie : {$arr[3]}  <br /> favorite : {$arr[4]}";
echo $str;

你为什么不试试这个