Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.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 如何通过Laravel检查URL是否存在?_Php_Url_Laravel - Fatal编程技术网

Php 如何通过Laravel检查URL是否存在?

Php 如何通过Laravel检查URL是否存在?,php,url,laravel,Php,Url,Laravel,我确实看到了这个答案: 但是,我想知道Laravel中是否存在一种方法,可以检查URL是否存在(不是404)?我假设您想检查是否存在与特定URL匹配的路由 $routes = Route::getRoutes(); $request = Request::create('the/url/you/want/to/check'); try { $routes->match($request); // route exists } catch (\Symfony\Compone

我确实看到了这个答案:


但是,我想知道Laravel中是否存在一种方法,可以检查URL是否存在(不是404)?

我假设您想检查是否存在与特定URL匹配的路由

$routes = Route::getRoutes();
$request = Request::create('the/url/you/want/to/check');
try {
    $routes->match($request);
    // route exists
}
catch (\Symfony\Component\HttpKernel\Exception\NotFoundHttpException $e){
    // route doesn't exist
}
试试这个功能

function checkRoute($route) {
    $routes = \Route::getRoutes()->getRoutes();
    foreach($routes as $r){
        if($r->getUri() == $route){
            return true;
        }
    }

    return false;
}

不是特别的laravel函数,但是你可以试试这个

 function urlExists($url = NULL)
    {
        if ($url == NULL) return false;
        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_TIMEOUT, 5);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $data = curl_exec($ch);
        $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        curl_close($ch);
        return ($httpcode >= 200 && $httpcode < 300) ? true : false;        
   }
函数urlExists($url=NULL) { 如果($url==NULL),则返回false; $ch=curl\u init($url); curl_setopt($ch,CURLOPT_超时,5); curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,5); curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); $data=curl\u exec($ch); $httpcode=curl\u getinfo($ch,CURLINFO\u HTTP\u代码); 卷曲关闭($ch); 返回($httpcode>=200&$httpcode<300)?真:假; }
既然您提到要检查外部URL(例如
https://google.com
),而不是应用程序中的路由,您可以使用Laravel中的Httpfacade():


你想检查laravel的外部url还是内部路由?@DouglasDC3:我不知道有什么不同。我想检查一个外部url。最好的方法是在你添加的另一篇文章中描述的。@DouglasDC3:那么你是说没有办法通过Laravel做到这一点?据我所知没有。我已经看过了,laravel没有提供这种功能。有没有办法通过laravel检查外部URL?OP提到他想检查外部URL。他没有在应用程序中说明路由。出于某种原因,即使路由不存在,我也无法获得
NotFoundHttpException
。我得到了一个uri为:
{fallbackpaceholder}
的路由对象。有什么想法吗?这对路由参数不起作用-使用
$routes->match()
可以解决这个问题。
use Illuminate\Support\Facades\Http;

$response = Http::get('https://google.com');

if( $response->successful() ) {
    // Do something ...
}