在保留一些内容的同时替换字符串

时间:2014-02-20 00:10:08

标签: php regex wildcard bbcode

所以我想弄清楚如何输入如

[url=value]

并将其转换为

<a href="value">

当然,我想保留这个价值。谢谢你的帮助!

最终,我希望能够为任何目标和替换提供内容,包括[email=value]<a href="mailto:value">

到目前为止,我有:

$before = explode($fix['before'],"value");
$after = explode($fix['after'],"value");
preg_replace('/\\'.$before[0].'(.+?)'.'\\'.$before[1].'/', $after[0].'\1'.$after[1], $post);

2 个答案:

答案 0 :(得分:1)

您可以使用正则表达式。在PHP中,您可以使用preg_replace函数。您可以使用的示例正则表达式为/\[url=(.+)\]/,替换为<a href="$1">

答案 1 :(得分:1)

您可以使用此正则表达式:

\[(.*?)=([^\]]+)]

工作正则表达式示例:

http://regex101.com/r/nL6lH9

测试字符串:

[url=http://www.web.com/test.php?key=valuepair]

匹配

match[1]: "url"
match[2]: "http://www.web.com/test.php?key=valuepair"

PHP:

$teststring = '[url=http://www.web.com/test.php?key=valuepair]';

preg_match('/\[(.*?)=([^\]]+)]/', $teststring, $match);

// So you could test if $match[1] == 'url' or 'email' or etc.

switch ($match[1]) {
    case "url":
        $output = '<a href="'.$match[2].'">Link</a>';
        break;
    case "email":
        $output = '<a href="mailto:'.$match[2].'">Send Email</a>';
        break;
}
echo str_replace($teststring, $output, $teststring);

输出:

<a href="http://www.web.com/test.php?key=valuepair">Link</a>