【发布时间】:2015-07-03 20:29:31
【问题描述】:
我正在开发一个 Symfony 2 项目,我正在制作一个自定义约束来检查一个 url 是否存在。我检查了一下,发现了这个:
How can I check if a URL exists via PHP?
问题是,如果我尝试像www.flskkhfkhsdf.com 这样的完全随机地址,它会给我一个警告并停止我的代码。有没有其他方法可以做到这一点?
警告:
警告:get_headers():php_network_getaddresses:getaddrinfo 失败: 不知道这样的主机。
这是我的代码:
<?php
namespace AdminBundle\Validator\Constraints;
use Symfony\Component\Validator\Constraint;
use Symfony\Component\Validator\ConstraintValidator;
Class ContrainteUrlExistValidator extends ConstraintValidator
{
public function validate($value, Constraint $constraint)
{
$file_headers = get_headers($value);
if($file_headers[0] == 'HTTP/1.1 404 Not Found') {
$this->context->buildViolation($constraint->message)
->setParameter('%string%', $value)
->addViolation();
}
}
}
【问题讨论】:
-
您是指任何网址吗?比如外部(来自应用程序)URL?
-
它寻找返回
404响应的服务器。如果你写一个不存在的域名,没有服务器会回复,你不可能得到一个404。您需要先检查域(主机)是否存在。就像错误消息所说的那样。
标签: php validation symfony