如何使用正则表达式替换字符串

时间:2011-01-04 21:54:21

标签: php regex

string = "(KEY)anything (KEY)anything (A)anything (KEY)anything";

结果应该是

string = "<p>anything</p> <p>anything</p> (A)anything <p>anything</p>";

4 个答案:

答案 0 :(得分:2)

$result = preg_replace('/\(KEY\)(\w+)/', '<p>\1</p>', $subject);

将适用于您的示例。

如果anything可以是多个单词,并且被定义为“(KEY)之后和下一个左括号之前的任何内容”,那么您可以使用

$result = preg_replace('/\(KEY\)([^(]+)/', '<p>\1</p>', $subject);

答案 1 :(得分:1)

\(KEY\)(\w+)替换为<p>$1</p>,或者等效的php表示法。

这假定边界是字边界(除了0-9A-Za-z_之外的任何边界)。

答案 2 :(得分:1)

如果您不知道如何开始,这里有一个关于正则表达式的优秀教程:
Learning Regular Expressions

还有很好的(和免费的)工具可以帮助你制作它们:
https://stackoverflow.com/questions/89718/is-there-anything-like-regexbuddy-in-the-open-source-world

答案 3 :(得分:0)

查看preg_replace(http://php.net/manual/en/function.preg-replace.php)

$pattern = '\(KEY\)(\w+)\s';
$replacement = '<p>$1</p>';
$string = preg_replace($pattern,$replacement,$string);

这样的事情应该有用。