我知道这可能是一个常见的问题,但我找不到我想要的确切答案。
我有以下字符串。
#|First Name|#
Random Text
#|Last Name|#
我想要做的是拥有#|
&之间的所有值。 |#
并用值替换整个字符串。这必须是一个数组,所以我可以循环遍历它们。
作为一个例子,我有:
#|First Name|#
处理后我希望它是:
John
因此,主要逻辑是使用First Name值从数据库中打印出一个值。
有人可以帮助我。
这是我尝试过的代码:
preg_match('/#|(.*)|#/i', $html, $ret);
由于
答案 0 :(得分:1)
除了让你的正则表达式非贪婪并逃离垂直条之外,你还需要preg_replace_callback()
:
$replacements = array( 'John', 'Smith');
$index = 0;
$output = preg_replace_callback('/#\|(.*?)\|#/i', function( $match) use ($replacements, &$index) {
return $replacements[$index++];
}, $input);
string(24) "John
Random Text
Smith"
答案 1 :(得分:1)
$string = '#|First Name|#
Random Text
#|Last Name|#';
$search = array(
'#|First Name|#',
'#|Last Name|#',
);
$replace = array(
'John',
'Smith',
);
$string = str_replace($search, $replace, $string);