gpt4 book ai didi

php - 用于处理字母数字输入的 RegEx - PHP

转载 作者:可可西里 更新时间:2023-11-01 00:36:02 25 4
gpt4 key购买 nike

我有这个代码。

<?php
$USClass = "3/312";
$USClass = preg_replace_callback('~[\d.]+/[\d.]+~', function ($matches) {
$parts = explode('/', $matches[0]);
return $parts[1] . ',' . $parts[0];
}, $USClass);
echo $USClass;
?>

它打印出我想要的 312,3。

但是,如果我提供像 D12/336 这样的输入,那么它就不起作用了。我想让它打印336,D12

我该怎么做?以及我当前不处理此字母数字的代码有什么问题?是因为我用了\d 吗?

编辑:

我希望它也能处理这样的输入

148/DIG.111

那么输出应该是DIG.111,148

最佳答案

是的 \d 只包含数字。

您可以尝试 \w 而不是字母数字,但另外它还包括 _

要成为 Unicode,您可以努力

~[\pL\d.]+/[\pL\d.]+~u

\pL 是具有“字母”属性的 Unicode 代码点

最后的u开启使用该功能所需的UTF-8模式

参见 http://www.php.net/manual/en/regexp.reference.unicode.php

其他解决方案

我认为你这样做有点复杂。如果您使用捕获组会更简单。

试试这个:

$in = "148/DIG.111";
preg_match_all('~([\w.]+)/([\w.]+)~', $in, $matches);
echo $matches[2][0] . ',' . $matches[1][0];

解释:

([\w.]+)/([\w.]+)
^^^^^^^^ ^^^^^^^^
Group 1 Group 2

由于括号,匹配的子字符串存储在数组 $matches 中。

参见 here有关 preg_match_all

的更多详细信息

关于php - 用于处理字母数字输入的 RegEx - PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7397624/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com