匹配并从字符串模式中提取值,并使用value替换数组键

时间:2018-01-24 06:43:25

标签: php arrays string

我有2个数组都包含人名和水果名。这两个数组都是动态生成的。

$persons = array(0 =>'John', 1 => 'Alan', 2 => 'Ninja');

$fruits = array(0 =>'apple', 1 => 'mango', 2 => 'banana', 3 => 'kiwi');

一个字符串,我想根据模式提供的密钥进行替换。

$str = "[person1] eats [fruit1]";
$str2 = "These [fruit2] belongs to [person3] and his friends";

我希望我的输出像

$str = "John eats apple";
$str2 = "These mango belongs to Ninja and his friends";

我想从模式*[person*]搜索模式并获取[fruit*]的值,其中*是动态生成的字符串。

修改1

我创建了一个函数

function replaceable_string($str, $elements, $pattern, $match="*"){
   foreach($elements as $index => $element){
     $index++;
     $new_pattern = str_replace($match, $index, $pattern);
     $str = str_replace($new_pattern, $element, $str);
   }
  return $str;
}

和像这样的传递值

$str = replaceable_string($str, $persons, '[person*]');
$str = replaceable_string($str, $fruits, '[fruit*]');
echo $str;

我不知道这有多高效。

或者还有其他最好的方法来实现这个目标吗?

1 个答案:

答案 0 :(得分:0)

这是另一种方法。不确定更有效率。

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_SSL_CIPHER_LIST, "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES128-SHA"); 
curl_setopt($ch, CURLOPT_SSLVERSION, 6); 
curl_setopt($ch, CURLOPT_URL, "xxxxxxxxxxxxxxx"); 
var_dump(curl_exec($ch)); 
var_dump(curl_error($ch)); 
var_dump(curl_errno($ch));