1 2 3 4 5 6 L

Page Header > Subtitle

[PHP] 정말로 URL이 존재 하는지를 알고 싶다면

function url_exist($url){//se passar a URL existe
    $c=curl_init();
    curl_setopt($c,CURLOPT_URL,$url);
    curl_setopt($c,CURLOPT_HEADER,1);//get the header
    curl_setopt($c,CURLOPT_NOBODY,1);//and *only* get the header
    curl_setopt($c,CURLOPT_RETURNTRANSFER,1);//get the response as a string from curl_exec(), rather than echoing it
    curl_setopt($c,CURLOPT_FRESH_CONNECT,1);//don't use a cached version of the url
    if(!curl_exec($c)){
        //echo $url.' inexists';
        return false;
    }else{
        //echo $url.' exists';
        return true;
    }
    //$httpcode=curl_getinfo($c,CURLINFO_HTTP_CODE);
    //return ($httpcode<400);
}​ 

 

다음은 url이 실제로 존재하고 읽을 수 있는지 테스트하는 매우 간단한 방법입니다.

if (preg_match("#^http?://.+#", $link) and @fopen($link,"r")) echo "OK";

( preg_match 가 없으면 서버의 모든 파일 이름의 유효성을 검사합니다) 

 

$pattern = "/\b(?:(?:http?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i";

 

function isURL($url = NULL) {

    if($url==NULL) return false;

    $protocol = '(http://|http://)';
    $allowed = '([a-z0-9]([-a-z0-9]*[a-z0-9]+)?)';

    $regex = "^". $protocol . // must include the protocol
             '(' . $allowed . '{1,63}\.)+'. // 1 or several sub domains with a max of 63 chars
             '[a-z]' . '{2,6}'; // followed by a TLD
    if(eregi($regex, $url)==true) return true;
    else return false; 

} 

 

 

 

UriTest.php (URL과 URN 모두 유효하고 유효하지 않은 경우 포함)

 

<?php


declare( strict_types = 1 );

namespace XaviMontero\ThrasherPortage\Tests\Tour;

use XaviMontero\ThrasherPortage\Tour\Uri;

class UriTest extends \PHPUnit_Framework_TestCase
{
    private $sut;

    public function testCreationIsOfProperClassWhenUriIsValid()
    {
        $sut = new Uri( 'http://example.com' );
        $this->assertInstanceOf( 'XaviMontero\\ThrasherPortage\\Tour\\Uri', $sut );
    }

    /**
     * @dataProvider urlIsValidProvider
     * @dataProvider urnIsValidProvider
     */
    public function testGetUriAsStringWhenUriIsValid( string $uri )
    {
        $sut = new Uri( $uri );
        $actual = $sut->getUriAsString();

        $this->assertInternalType( 'string', $actual );
        $this->assertEquals( $uri, $actual );
    }

    public function urlIsValidProvider()
    {
        return
            [
                [ 'http://example-server' ],
                [ 'http://example.com' ],
                [ 'http://example.com/' ],
                [ 'http://subdomain.example.com/path/?parameter1=value1&parameter2=value2' ],
                [ 'random-protocol://example.com' ],
                [ 'http://example.com:80' ],
                [ 'http://example.com?no-path-separator' ],
                [ 'http://example.com/pa%20th/' ],
                [ 'ftp://example.org/resource.txt' ],
                [ 'file://../../../relative/path/needs/protocol/resource.txt' ],
                [ 'http://example.com/#one-fragment' ],
                [ 'http://example.edu:8080#one-fragment' ],
            ];
    }

    public function urnIsValidProvider()
    {
        return
            [
                [ 'urn:isbn:0-486-27557-4' ],
                [ 'urn:example:mammal:monotreme:echidna' ],
                [ 'urn:mpeg:mpeg7:schema:2001' ],
                [ 'urn:uuid:6e8bc430-9c3a-11d9-9669-0800200c9a66' ],
                [ 'rare-urn:uuid:6e8bc430-9c3a-11d9-9669-0800200c9a66' ],
                [ 'urn:FOO:a123,456' ]
            ];
    }

    /**
     * @dataProvider urlIsNotValidProvider
     * @dataProvider urnIsNotValidProvider
     */
    public function testCreationThrowsExceptionWhenUriIsNotValid( string $uri )
    {
        $this->expectException( 'RuntimeException' );
        $this->sut = new Uri( $uri );
    }

    public function urlIsNotValidProvider()
    {
        return
            [
                [ 'only-text' ],
                [ 'http//missing.colon.example.com/path/?parameter1=value1&parameter2=value2' ],
                [ 'missing.protocol.example.com/path/' ],
                [ 'http://example.com\\bad-separator' ],
                [ 'http://example.com|bad-separator' ],
                [ 'ht tp://example.com' ],
                [ 'http://exampl e.com' ],
                [ 'http://example.com/pa th/' ],
                [ '../../../relative/path/needs/protocol/resource.txt' ],
                [ 'http://example.com/#two-fragments#not-allowed' ],
                [ 'http://example.edu:portMustBeANumber#one-fragment' ],
            ];
    }

    public function urnIsNotValidProvider()
    {
        return
            [
                [ 'urn:mpeg:mpeg7:sch ema:2001' ],
                [ 'urn|mpeg:mpeg7:schema:2001' ],
                [ 'urn?mpeg:mpeg7:schema:2001' ],
                [ 'urn%mpeg:mpeg7:schema:2001' ],
                [ 'urn#mpeg:mpeg7:schema:2001' ],
            ];
    } 

} 

 

 

0
0
이 글을 페이스북으로 퍼가기 이 글을 트위터로 퍼가기 이 글을 카카오스토리로 퍼가기 이 글을 밴드로 퍼가기
captcha
자동등록방지 숫자입력

PHP/Python

번호 제목 글쓴이 날짜 조회수
77 PHP 정말로 URL이 존재 하는지를 알고 싶다면 미도어묵 01-12 1,044
76 PHP [Nginx PHP-FPM] 페이지 access denied. 뜨는 현상 (see security.limit_extensions) - php7 … 미도어묵 11-05 1,207
75 PHP PHP를 이용한 심플한 게시판 파싱 미도어묵 11-01 1,078
74 PHP CI3 / php7.1 이상 버전 session 버그시~~~ 미도어묵 10-31 694
73 PHP PHP 5 Forms - Validate E-mail and URL 미도어묵 10-01 660
72 PHP php 전화번호 정규식 미도어묵 06-25 761
71 PHP 문자열에 휴대폰번호가 있으면 010-***-****으로 변경. 미도어묵 06-25 752
70 PHP 영상 썸네일 api function 미도어묵 02-13 748
69 PHP php memcached example 미도어묵 01-02 699
68 PHP php curl 을 이용한 자동 로그인 미도어묵 12-22 850
67 PHP Home / APIs / Requests::register_autoloader() – Register the built-in autoloader 미도어묵 12-21 761
66 PHP 업로드된 이미지 정사각형으로 썸네일 만드는 함수 미도어묵 11-01 759
65 PHP PHP + redis(phpredis) 연동하기 기본 사용 샘플 미도어묵 09-18 1,273
64 PHP Simple PHP MySQL Rest API Sample Example Tutorial 미도어묵 09-15 721
63 PHP Creating a simple REST API in PHP 미도어묵 09-15 704
62 PHP 게시물이 삭제 되었습니다 관리자 08-30 794
61 PHP php 링크 파일 다운받기 관리자 08-28 730
60 PHP php용 형태소 분석기 설치 및 바인딩과 실사용 +1 관리자1 08-28 985
59 PHP PHP로 HTML DOM 파싱하기 관리자 08-25 726
58 PHP PHP7: install ext-dom issue(composer require --dev phpunit/phpunit) 관리자 08-04 752