返回两个字符串之间的值

时间:2012-07-19 20:39:30

标签: php regex string replace str-replace

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

我有以下字符串。

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

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

作为一个例子,我有:

#|First Name|#

处理后我希望它是:

John

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

有人可以帮助我。

这是我尝试过的代码:

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

由于

2 个答案:

答案 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);

will output

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);