Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
格式";生的;PHP中Java UUID的字符串_Java_Php_Json_String_Curl - Fatal编程技术网

格式";生的;PHP中Java UUID的字符串

格式";生的;PHP中Java UUID的字符串,java,php,json,string,curl,Java,Php,Json,String,Curl,是否有一种更有效、更简化的方法可以在PHP中将“格式化”的Java UUID(不带破折号)转换为与Java兼容的格式(带破折号),并最终实现:我该如何做 我有一些代码已经执行了这个操作,但它似乎不专业,我觉得可以更有效地执行 [... PHP code ...] $uuido = $json['id']; $uuidx = array(); $uuidx[0] = substr( $uuido, 0, 8 ); $uuidx[1] = substr( $uuido, 8, 4 ); $uuid

是否有一种更有效、更简化的方法可以在PHP中将“格式化”的Java UUID(不带破折号)转换为与Java兼容的格式(带破折号),并最终实现:我该如何做

我有一些代码已经执行了这个操作,但它似乎不专业,我觉得可以更有效地执行

[... PHP code ...]
$uuido = $json['id'];

$uuidx = array();
$uuidx[0] = substr( $uuido, 0, 8 );
$uuidx[1] = substr( $uuido, 8, 4 );
$uuidx[2] = substr( $uuido, 12, 4);
$uuidx[3] = substr( $uuido, 16, 4);
$uuidx[4] = substr( $uuido, 20, 12);

$uuid = implode( "-", $uuidx );
[... PHP code ...]

Input:  f9e113324bd449809b98b0925eac3141
Output: f9e11332-4bd4-4980-9b98-b0925eac3141
来自
$json['id']
的数据通过使用
file\u get\u contents($url)
函数和
json\u decode($file)
从下面调用,这也可以通过cURL来完成,但由于它最终会同时请求2048个配置文件,我认为它会变得很慢

我确实有我的代码在使用中,并且是通过下面的公开的,其中通常包含一个在线玩家的列表

注意:有几个问题与此相关,但据我所知,没有一个问题适用于PHP。我已经看过了


我提到Java UUID,因为解析后的输出应该有效地转换为播放器UUID,以便在1.7.X之后用于Spigot或Craftbukkit的基于Java的插件中使用。

UUID不是一种特殊的Java格式。这是最重要的

通用唯一标识符(UUID)是软件构造中使用的一种标识符标准UUID只是一个128位的值

发生的情况是,从128位值到相同值的可读版本的转换(将其转换为字符串)通常遵循一些约定

基本上,数字被转换成更好的人类可读的十六进制格式,用一些连字符来分隔位块



从性能角度看,您可以多次使用函数,而不是使用substr创建字符串数组并对其应用内爆。

您的问题没有多大意义,但假设您希望以正确的Java格式读取UUID,您可以执行以下操作:

import java.util.UUID;
class A
{
    public static void main(String[] args){


        String input = "f9e113324bd449809b98b0925eac3141";                         
        String uuid_parse = input.replaceAll(                                            
                        "(\\w{8})(\\w{4})(\\w{4})(\\w{4})(\\w{12})",                            
                        "$1-$2-$3-$4-$5");                                                      

        UUID uuid = UUID.fromString(uuid_parse);
        System.out.println(uuid);
    }
}
从maerics借来的,见此处:

或者在PHP中,您可以执行以下操作:

<?php 
    $UUID = "f9e113324bd449809b98b0925eac3141";
    $UUID = substr($UUID, 0, 8) . '-' . substr($UUID, 8, 4) . '-' . substr($UUID, 12, 4) . '-' . substr($UUID, 16, 4)  . '-' . substr($UUID, 20);
    echo $UUID;
?>

借用fico7489:


然后您可以将其发送到Java,在Java中,您可以使用
fromtString()

创建UUID对象。您还没有指定要实现UUID格式的语言。。。您提到了Java这个词,但只提供了PHP代码和查询。你能更清楚一点你想做什么吗?按要求做。在标题和问题中更新。回顾问题:[……]我提到Java UUID,因为解析的输出应该有效地转换为播放器UUID,以便在1.7.X之后用于基于Java的Spigot或Craftbukkit插件。您的第二个答案通过以下方式指导我:
$UUID=preg_replace(/(\w{8})(\w{4})(\w{4})(\w{4})(\w{4})(\w{12})/I“,“$1-$2-$3-$4-$5”;$json['id']);
@LeoV117虽然我认为正则表达式很好用,但在某些情况下,当我看到具有本机特性的解决方案时,如
substr()
,我倾向于避免使用它。然而,在这种情况下,正则表达式可能具有更快的优势。