1.8.1 2024-07-11 07:10 UTC

This package is auto-updated.

Last update: 2024-09-11 07:41:42 UTC


README

PHP的原生Yggdrasil支持的网络库

安装

composer require yggverse/net

使用

套接字

检查套接字是否打开

var_dump(
    \Yggverse\Net\Socket::isOpen('yo.index', 80)
);

检查主机有效

var_dump(
    \Yggverse\Net\Socket::isHost('yo.index')
);

检查端口有效

var_dump(
    \Yggverse\Net\Socket::isPort(80)
);

解析

解析记录

var_dump(
    \Yggverse\Net\Dig::records('yo.index', ['A', 'AAAA'], &$result = [], &$error = [], $provider = null, $timeout = 5)
);

检查主机名有效

var_dump(
    \Yggverse\Net\Dig::isHostName('yo.index')
);

检查记录有效

var_dump(
    \Yggverse\Net\Dig::isRecord('A')
);

检查记录值有效

var_dump(
    \Yggverse\Net\Dig::isRecordValue('A', '127.0.0.1')
);

解析

初始化解析器

$resolve = new \Yggverse\Net\Resolve(
    [
        'A',
        'AAAA'
    ],
    [
        '1.1.1.1',
        '8.8.8.8'
    ],
    // ..
);

获取解析的URL字符串

$resolved = $resolve->url(
    'https://en.wikipedia.org/wiki/Domain_Name_System'
    // next arguments contain debug variables and new address object
);

if ($resolved)
{
    var_dump(
        $resolved // https://185.15.59.224/wiki/Domain_Name_System
    );
}

解析地址对象

$resolved = $resolve->address(
    new \Yggverse\Net\Address(
        'https://en.wikipedia.org/wiki/Domain_Name_System'
    )
);

if ($resolved)
{
    var_dump(
        $resolved->get() // https://185.15.59.224/wiki/Domain_Name_System
    );

    var_dump(
        $resolved->getHost() // 185.15.59.224
    );
}

地址

包含处理网络地址的方法。

基本地址方法

地址部分的多种操作

  • 方案
  • 用户
  • 密码
  • 主机
  • 协议
  • 路径
  • 查询
  • 片段

从相对地址到绝对地址的转换

文档根目录

$base = new \Yggverse\Net\Address(
    'http://yo.ygg/a1/b1/c1'
);

$address = new \Yggverse\Net\Address(
    '/a2'
);

var_dump(
    $address->getAbsolute(
        $base
    ) // return http://yo.ygg/a2
);

当前文件夹

$base = new \Yggverse\Net\Address(
    'http://yo.ygg/a1/b1/c1'
);

$address = new \Yggverse\Net\Address(
    'c2'
);

var_dump(
    $address->getAbsolute(
        $base
    ) // return http://yo.ygg/a1/b1/c2
);

结束斜杠

$base = new \Yggverse\Net\Address(
    'http://yo.ygg/a1/b1/c1/'
);

$address = new \Yggverse\Net\Address(
    '../../b2/c2'
);

var_dump(
    $address->getAbsolute(
        $base
    ) // return http://yo.ygg/a1/b2/c2
);

所有选项

$base = new \Yggverse\Net\Address(
    'http://user:password@yo.ygg/a1/b1/c1?attribute=value#anchor'
);

$address = new \Yggverse\Net\Address(
    '../../a2/b2?attribute2=value2#anchor2'
);

var_dump(
    $address->getAbsolute(
        $base
    ) // return http://user:password@yo.ygg/a2/b2?attribute2=value2#anchor2
);

有效

网络实体验证

支持的方法

  • Valid::ip
  • Valid::ip4
  • Valid::ip6
  • Valid::domainHostName

集成

  • gemini-dl - Gemini协议的命令行批量下载器
  • web-api - 原生Yggdrasil/IPv6支持的网络API
  • Yo! - 不同网络上的爬虫和搜索引擎
  • Yoda - 用于Gemini协议的实验性PHP-GTK浏览器