我想用“protected function _someMethod()”替换所有“private function __someMethod()”。 但我确实想要保持魔术不受影响。 替换不起作用。
$x = array(
'/\bprivate function __([^(construct|destruct|sleep|wakeup|get|set|call|toString|invoke|set_state|clone|callStatic|isset|unset)])\b/i',
'protected function _\1'
)
\b
和\b
作为字边界。
它使用preg_replace($x[0], $x[1])
。
THX!
我也试过[^construct^destruct^sleep]
等
同样适用于" $this->__ "
和" ::__ "
(静态调用),当然。
答案 0 :(得分:1)
[^...]
语法是否定的字符类。方括号中的所有内容都只是一个字符列表,()
和|
不会被解释,并且您的单词会被拖拽到一个字母列表中。
您想要使用的是negative assertion (?!....)
'/\bprivate function __(?!construct|destruct|sleep|wakeup|get|set|call|toString|invoke|set_state|clone|callStatic|isset|unset)\w+\b/i',
后面应该\w+
为你的preg_replacing工作。