【问题标题】:Get array value form string pattern in PHP从 PHP 中的字符串模式获取数组值
【发布时间】:2015-09-24 11:45:24
【问题描述】:

我假设数组是

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

如何解决

【问题讨论】:

  • 你试过自己解决吗? :)
  • 将此数组分配给某个变量然后使用它
  • 一个不错的小preg_replace_callback()也许?

标签: php arrays string


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      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

      爱好:足球

      最喜欢的:比萨饼

      【讨论】:

        【解决方案4】:
        $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;
        

        你为什么不试试这个

        【讨论】:

          猜你喜欢
          • 2021-05-01
          • 2014-02-06
          • 1970-01-01
          • 1970-01-01
          • 2018-08-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多