PHP - preg_replace 简化吗?

发布于 2024-10-06 18:34:43 字数 381 浏览 2 评论 0原文

还没有使用正则表达式替换太多,并且不确定我的做法是否是最好的方法。 我正在尝试更改例如:

'(.123.)' OR 123.)' OR '(.123

必须

'.(123).' OR 123).' OR '.(123

是中间的 int 。

preg_replace('/\.\)/', ').',preg_replace('/\(\./', '.(',preg_replace('/(\.[0-9]+\.)|(\.[0-9]+|[0-9]+\.)/', '($0)',$str)));

我上面的代码有效,只是想知道是否有更好的方法来做到这一点

haven't used regex replaces much and am not sure if how I have done this is the best way of doing it.
Im trying to change eg:

'(.123.)' OR 123.)' OR '(.123

to

'.(123).' OR 123).' OR '.(123

must be an int in the middle.

preg_replace('/\.\)/', ').',preg_replace('/\(\./', '.(',preg_replace('/(\.[0-9]+\.)|(\.[0-9]+|[0-9]+\.)/', '($0)',$str)));

the code I have above works, just wondering if there is a better way to do it

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

北风几吹夏 2024-10-13 18:34:43

您能否在两次替换中做更简单的事情,一次替换数字之前的 (.,一次替换数字之后的 .)?

$str=preg_replace('/\(\.(\d)/', '.($1', $str);
$str=preg_replace('/(\d)\.\)/', '$1).', $str);

甚至可以一次性完成此操作,但看起来更难看。在这里,我查找前面带有 (. 且可选地后跟 .) 的数字,或者可选地前面带有 (. 并后跟 .),然后用 .(number). 替换整个批次 - 这具有将 .(123 转换为 .(123) 的效果.,您可能想要也可能不想要...

$str=preg_replace('/\(\.(\d+)(?:\.\))?|(?:\(\.)?(\d+)\.\)/', '.($1$2).', $str);

Could you do more simply in two replacements, one for (. before a digit and one for .) after a digit?

$str=preg_replace('/\(\.(\d)/', '.($1', $str);
$str=preg_replace('/(\d)\.\)/', '$1).', $str);

It's even possible to do this in one go, but it looks uglier. Here I look for a number preceded by (. and optionally followed by .), or optionally preceded by (. and followed by .), then replace the whole lot with .(number). - this has the effect of turning .(123 into .(123)., which you may or may not want...

$str=preg_replace('/\(\.(\d+)(?:\.\))?|(?:\(\.)?(\d+)\.\)/', '.($1$2).', $str);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文