gpt4 book ai didi

php - 在 php 中解析子域的字符串

转载 作者:搜寻专家 更新时间:2023-10-31 22:09:07 24 4
gpt4 key购买 nike

如果不存在方案/主机,我如何查找字符串是否存在子域。

例如:$url="sub.main.com/images/sample.jpg";

我正在尝试解析图像的 url,并且在大多数情况下我使用 parse_url

但是鉴于 url 字符串可以有一些不同的风格,例如:

/images/sample.jpg
//main.com/images/sample.jpg
images/sample.jpg

等等,我正在尝试一个一个地解决不同的情况。现在,我发现很难检测字符串是否存在子域。

所以对于 $url="sub.main.com/images/sample.jpg";` 这样的字符串,我想提取子域,对于像 images/sample.jpg 这样的字符串,我想发现没有子域

最佳答案

有趣的问题。我已经摆弄了一段时间;这种方法不可避免地并不完美,但它可能会让您走上正确的道路。

我的解决方案从这个存储库中的两个源文件开始:https://github.com/usrflo/registered-domain-libs/tree/master/PHP

首先,您可能需要修改 regDomain.inc.php 以将 $signingDomainParts = split('\.', $signingDomain); 的实例更改为 $signingDomainParts = preg_split( '/\./', $signingDomain); 如果 split 在你的 php 版本中被弃用。

一旦你保存了这些,试试这个测试代码,我把线程中提到的所有 URL 作为测试用例放在这里:

<?php
require_once("effectiveTLDs.inc.php");
require_once("regDomain.inc.php");
$tests = Array("/images/sample.jpg","//main.com/images/sample.jpg","images/sample.jpg", "sub.main.com/images/sample.jpg", "http://www.example.com/www.google.com/sample.jpg", "amazon.co.uk/images/sample.jpg", "amazon.com/images/sample.jpg", "http://sub2.sub.main.co.uk/images/sample.jpg", "sub2.sub.main.co.uk/images/sample.jpg");
foreach($tests as $test)
{
echo "Attempting $test.<BR/>";
$one = parse_url($test);
if(!array_key_exists("host", $one))
{
echo "Converting to: http://$test";
echo "<BR/>";
$one = parse_url("http://$test");
}
if(!$one){echo "<BR/>";continue;}
echo "parse_url parts: ";
print_r($one);
echo "<BR/>";
if($one && array_key_exists("host", $one))
{
$domain = getRegisteredDomain($one["host"], $tldTree);
if(sizeof($domain))
{
$two = explode(".", $domain);
echo "domain parts: ";
print_r($two);
echo "<BR/>";
if(sizeof($two))
{
$three = array_diff(explode(".", $one["host"]), $two);
if(sizeof($three))
{
echo "Hark! A subdomain!: ";
print_r($three);
echo "<BR/>";
}
}
}
}
echo "<BR/>";

}

?>

此代码将以下测试用例标识为具有子域:

Attempting sub.main.com/images/sample.jpg.
Hark! A subdomain!: Array ( [0] => sub )

Attempting http://www.example.com/www.google.com/sample.jpg.
Hark! A subdomain!: Array ( [0] => www )

Attempting http://sub2.sub.main.co.uk/images/sample.jpg.
Hark! A subdomain!: Array ( [0] => sub2 [1] => sub )

Attempting sub2.sub.main.co.uk/images/sample.jpg.
Hark! A subdomain!: Array ( [0] => sub2 [1] => sub )

关于php - 在 php 中解析子域的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14664408/

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