@dgt
Изучаю программирование

Как осуществить замену в строке данными из массива?

Здравствуйте!

Есть строка, например, /hello/{:num}/{:str}/ и массив array("num" => "[0-9]", "str" => "[a-zA-Z]"), необходимо сделать замену в строке, чтоб получилось /hello/[0-9]/[a-zA-Z]. Каким образом это можно сделать? Подскажите, пожалуйста!
  • Вопрос задан
  • 582 просмотра
Решения вопроса 1
DevMan
@DevMan
$str = "/hello/{:num}/{:str}/";
$replace = [
	"num" => "[0-9]",
	"str" => "[a-zA-Z]"
];
$str = preg_replace_callback(
		'/{:(.*)}/U',
		function ($matches) use ($replace) {
			if(isset($replace[$matches[1]])) {
				return $replace[$matches[1]];
			}
			else {
				return $matches[0];
			}
		},
		$str
	);
echo $str;
ideone.com/6OT3Wl
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
OlegMifle
@OlegMifle
php-программист
strtr должна подойти.
Ответ написан
Комментировать
Flashter
@Flashter
Учусь программировать
<?php
$str = "/hello/{:num}/{:str}/";
$replace = [
  "num" => "[0-9]",
  "str" => "[a-zA-Z]"
];
$str_array = explode("/", $str);
$str_array[2]= $replace['num'];
$str_array[3]= $replace['str'];
$str = implode("/", $str_array);
print_r($str);
?>
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы