Как заменить строку массивом () в php - PullRequest
0 голосов
/ 07 июня 2018

У меня есть такой текст,

$string = "I have some fruits like [name], [another_name] and [one_another_name]";

И такой массив,

$fruits_array = array("Banana", "Apple", "Orange");

Теперь, как я могу заменить текст между фигурными скобками следующим массивом?

Я хочу получить такой результат,

I have some fruits like Banana, Apple and Orange.

Пожалуйста, предоставьте актуальное решение.

Заранее спасибо.

Ответы [ 5 ]

0 голосов
/ 07 июня 2018

Вы также можете использовать preg_replace_callback с регулярным выражением \[[^]]+\] для сопоставления с открытием [, затем не сопоставлять ], используя класс отрицательных символов, а затемсовпадение ].

В обратном вызове используйте array_shift, чтобы сдвинуть элемент с начала массива и использовать его в качестве замены.

$string = "I have some fruits like [name], [another_name] and [one_another_name]";
$fruits_array = array("Banana", "Apple", "Orange");

$string = preg_replace_callback(
    '/\[[^]]+\]/',
    function ($matches) use (&$fruits_array) {
        return array_shift($fruits_array);
    },
    $string
);

echo $string;

Demo

0 голосов
/ 07 июня 2018

Попробуйте это ...

$string = "I have some fruits like [name], [name] and [name]";
$arr = explode('[name]',$string);
$fruits_array = array("Banana", "Apple", "Orange");

$newText = '';
for($i = 0; $i < count($arr); $i++){
   $newText .= $arr[$i] . $fruits_array[$i];
}

echo $newText;
0 голосов
/ 07 июня 2018

Попробуйте это

$string = "I have some fruits like [name], [another_name] and [one_another_name]";
$fruits_array = array("Banana", "Apple", "Orange");

foreach($fruits_array as $replace)
{
    $string = preg_replace('/\[.*?\]/i', $replace, $string, 1);
}

echo $string;
0 голосов
/ 07 июня 2018
<?php

$string = "I have some fruits like [name], [name] and [name]";

$fruits_array = array("Banana", "Apple", "Orange");

foreach ($fruits_array as $key => $value) {
  $string = preg_replace('[name]', $value, $string, 1);
}
$string = str_replace('[', '', $string);
$string = str_replace(']', '', $string);
echo $string;
0 голосов
/ 07 июня 2018

Взрыв массива запятой с пробелом.Попробуйте вот так:

$fruits_array = array("Banana", "Apple", "Orange");

echo 'I have some fruits like '.implode(', ',$fruits_array).'.';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...