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

时间:2015-09-24 11:45:24

标签: php arrays string

我认为数组是

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

如何解决

4 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:3)

使用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;

Demo

答案 2 :(得分:0)

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;

以上回报: 约翰罗宾逊生日27-09-1980

霍比:足球

最爱:披萨

答案 3 :(得分:0)

$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;

为什么不试试这个