0

我知道这可能是一个常见问题,但我找不到我想要的确切答案。

我有以下字符串。

#|First Name|#
Random Text
#|Last Name|#

我想做的是拥有#|&之间的所有值,|#并用一个值替换整个字符串。这必须在一个数组中,所以我可以遍历它们。

举个例子,我有:

#|First Name|#

处理后我希望它是:

John

因此,主要逻辑是使用 First Name 值从数据库中打印出一个值。

有人可以帮我吗?

这是我尝试过的代码:

preg_match('/#|(.*)|#/i', $html, $ret);

谢谢

4

2 回答 2

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"
于 2012-07-19T20:43:02.853 回答
1
$string = '#|First Name|#
Random Text
#|Last Name|#';
$search = array(
    '#|First Name|#',
    '#|Last Name|#',
);
$replace = array(
    'John',
    'Smith',
);
$string = str_replace($search, $replace, $string);
于 2012-07-19T20:44:41.423 回答