相关疑难解决方法(0)

替换字符串中的占位符变量

刚刚完成这个功能.基本上,假设查看字符串并尝试查找任何占位符变量,这些变量将位于两个大括号之间{}.它抓取大括号之间的值,并使用它来查看应与键匹配的数组.然后它用匹配键数组中的值替换字符串中的大括号变量.

但它有一些问题.首先是当var_dump($matches)它把它放在数组中的数组时.所以我必须使用两个foreach()只是达到正确的数据.

我也觉得它很沉重,我一直在寻找它,试图让它变得更好,但我有点难过.我错过了任何优化?

function dynStr($str,$vars) {
    preg_match_all("/\{[A-Z0-9_]+\}+/", $str, $matches);
    foreach($matches as $match_group) {
        foreach($match_group as $match) {
            $match = str_replace("}", "", $match);
            $match = str_replace("{", "", $match);
            $match = strtolower($match);
            $allowed = array_keys($vars);
            $match_up = strtoupper($match);
            $str = (in_array($match, $allowed)) ? str_replace("{".$match_up."}", $vars[$match], $str) : str_replace("{".$match_up."}", '', $str);
        }
    }
    return $str;
}

$variables = array("first_name"=>"John","last_name"=>"Smith","status"=>"won");
$string = 'Dear {FIRST_NAME} {LAST_NAME}, we wanted to tell you that you {STATUS} the competition.';
echo dynStr($string,$variables);
//Would …
Run Code Online (Sandbox Code Playgroud)

php preg-match

11
推荐指数
3
解决办法
2万
查看次数

PHP str_replace需要从数组中随机替换吗?

我已经研究过并且需要找到一种随机替换需求的最佳方法.

即:

$text = "Welcome to [city]. I want [city] to be a random version each time. [city] should not be the same [city] each time.";

$keyword = "[city]";
$values = array("Orlando", "Dallas", "Atlanta", "Detroit", "Tampa", "Miami");

$result = str_replace("[$keyword]", $values, $text);
Run Code Online (Sandbox Code Playgroud)

结果是每次出现的城市都有"数组".我需要用$ values中的随机替换所有城市事件.我想以最干净的方式做到这一点.到目前为止,我的解决方案很糟糕(递归).什么是最好的解决方案?谢谢!

php arrays string random str-replace

2
推荐指数
2
解决办法
2667
查看次数

标签 统计

php ×2

arrays ×1

preg-match ×1

random ×1

str-replace ×1

string ×1