【问题标题】:replace strings with variables用变量替换字符串
【发布时间】:2011-09-29 05:21:03
【问题描述】:
$var1 = 'abc';
$var2 = '123';

如何从这样的字符串中替换 %var1%var2%

aaaaaaaa%var1%bbbbbbbbb%var2%ffffffff

具有$var1$var2 的值?

【问题讨论】:

  • whaaaaaaat -2 ??呜呜呜呜呜

标签: php string variables replace


【解决方案1】:

假设 >= PHP 5.3...

preg_replace_callback('%(\w+?)%', function($matches) use ($var1, $var2) {
   return $$matches[1][0];
}, $str);

如您所见,您需要将每个外部变量的引用传递给闭包。

您可能最好用替换变量构造一个数组,然后将该数组传入然后对其下标...

preg_replace_callback('%(\w+?)%', function($matches) use ($vars) {
   return isset($vars[$matches[1][0]]) ? $vars[$matches[1][0]] : $matches[0][0];
}, $str);

我现在还没有机会测试这段代码,但我相信一般原则是正确的:)

【讨论】:

  • 你能发布一个我如何传递数组的例子吗?我应该用它替换 function() 吗?
【解决方案2】:
$var1 = 'abc';
$var2 = '123';
$subject = 'aaaaaaaa%var1%bbbbbbbbb%var2%ffffffff';

echo str_replace(array('%var1%', '%var2%'), array($var1, $var2), $subject);

// output: aaaaaaaaabcbbbbbbbbb123ffffffff

http://us.php.net/manual/en/function.str-replace.php

【讨论】:

    【解决方案3】:

    如果我正确地阅读了你的问题,你想使用字符串文字

    'aaaaaaaa%var1%bbbbbbbbb%var2%ffffffff' 并分别用'abc''123' 替换子字符串var1var2,对吗?在这种情况下,preg_replace 应该可以解决问题。

    【讨论】:

      猜你喜欢
      • 2020-07-09
      • 2013-02-16
      • 2018-01-01
      • 1970-01-01
      • 2017-06-21
      • 1970-01-01
      • 2014-12-11
      • 1970-01-01
      • 2017-04-06
      相关资源
      最近更新 更多