如何使用PHP将数字格式化为塞尔维亚格式?

如何使用PHP将数字格式化为塞尔维亚格式?,php,regex,numbers,Php,Regex,Numbers,我从以下表格中发送了号码: 0641234567 064-123/4567 064/123-4567 3816412345678 +3816412345678 它必须是这样的: 0641234567 064-123/4567 064/123-4567 3816412345678 +3816412345678 带+,不带0,最多14个字符,包括“+” 我如何使用正则表达式解决这个问题?您显示的数据可能不完整,并且可能存在我们无法正确看到的边缘情况。根据我们现在看到的情况,您可以通过将前导的

我从以下表格中发送了号码:

0641234567
064-123/4567
064/123-4567
3816412345678
+3816412345678
它必须是这样的:

0641234567
064-123/4567
064/123-4567
3816412345678
+3816412345678
带+,不带0,最多14个字符,包括“+”


我如何使用正则表达式解决这个问题?

您显示的数据可能不完整,并且可能存在我们无法正确看到的边缘情况。根据我们现在看到的情况,您可以通过将前导的
064
替换为
38164
,然后去除所有破折号和正斜杠来实现替换。使用
preg\u replace

$input = "064-123/4567";
$output = preg_replace('/[\/-]/', '', preg_replace('/^064/', '38164', $input));
echo $input . "\n" . $output;

064-123/4567
381641234567

你所需要的是多重替换,基本上有三条规则

  • 用空字符串替换
    -
    /
  • +381
  • 如果第一个数字是1到9,则在数字的开头加一个
    +
看看这个

印刷品

0641234567 --> +381641234567
064-123/4567 --> +381641234567
064/123-4567 --> +381641234567
3816412345678 --> +3816412345678

如果您的任何案件被发现,请告诉我。

您尝试过什么?所有结果都应生成
+3816412345678
或最后一个示例?如果您可以在不使用正则表达式的情况下解决某个问题-在不使用正则表达式的情况下解决它:)您可以尝试使用
stru_replace
删除无效字符和除
64
以外的所有起始字符,使用strlen检查长度,然后添加前缀
+381