string = "(KEY)anything (KEY)anything (A)anything (KEY)anything";
结果应该是
string = "<p>anything</p> <p>anything</p> (A)anything <p>anything</p>";
答案 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);
这样的事情应该有用。