PHP - 在大写字母前添加下划线
如何替换一组类似于:
SomeText
to
Some_Text
的单词?
How can I replace a set of words that look like:
SomeText
to
Some_Text
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
如何替换一组类似于:
SomeText
to
Some_Text
的单词?
How can I replace a set of words that look like:
SomeText
to
Some_Text
?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(5)
使用正则表达式可以轻松实现这一点:
正则表达式的简要说明:
然后我们用 '_$1' 替换,这意味着将匹配项替换为 [下划线 + 反向引用 1]
This can easily be achieved using a regular expression:
a brief explanation of the regex:
Then we replace with '_$1' which means replace the match with an [underscore + backreference 1]
说明:
正则表达式使用两个环视断言(一个向后查找和一个向前查找)来查找字符串中应插入下划线的位置。
第一个断言确保在字符串开头不插入下划线。
Explanation:
The regex uses two look-around assertions (one look-behind and one look-ahead) to find spots in the string where an underscore should be inserted.
The first assertion makes sure that no underscore is inserted at the start of the string.
最简单的方法是使用正则表达式替换。
例如:
substr 调用是删除前导 '_'
The simplest way to do this is with a regular expression replacement.
For example:
The substr call there is to remove a leading '_'
$result = strtolower(preg_replace('/(.)([AZ])/', '$1_$2', $subject));
转换:
为:
$result = strtolower(preg_replace('/(.)([A-Z])/', '$1_$2', $subject));
Converts:
To: