Get a URL from a String

后端 未结 2 1541
暖寄归人
暖寄归人 2020-12-09 23:40

For a little while now I\'ve been searching for a code to get URL\'s out of a string using PHP. I\'m basically trying to get a Shortened URL out of a message, and then later

相关标签:
2条回答
  • 2020-12-10 00:03

    This code may be helpful (see MadTechie's latest post):

    http://www.phpfreaks.com/forums/index.php/topic,245248.msg1146218.html#msg1146218

    <?php
    $string = "some random text http://tinyurl.com/9uxdwc some http://google.com random text http://tinyurl.com/787988";
    
    $regex = '$\b(https?|ftp|file)://[-A-Z0-9+&@#/%?=~_|!:,.;]*[-A-Z0-9+&@#/%=~_|]$i';
    
    preg_match_all($regex, $string, $result, PREG_PATTERN_ORDER);
    $A = $result[0];
    
    foreach($A as $B)
    {
       $URL = GetRealURL($B);
       echo "$URL<BR>";   
    }
    
    
    function GetRealURL( $url ) 
    { 
       $options = array(
          CURLOPT_RETURNTRANSFER => true,
          CURLOPT_HEADER         => true,
          CURLOPT_FOLLOWLOCATION => true,
          CURLOPT_ENCODING       => "",
          CURLOPT_USERAGENT      => "spider",
          CURLOPT_AUTOREFERER    => true,
          CURLOPT_CONNECTTIMEOUT => 120,
          CURLOPT_TIMEOUT        => 120,
          CURLOPT_MAXREDIRS      => 10,
       ); 
    
       $ch      = curl_init( $url ); 
       curl_setopt_array( $ch, $options ); 
       $content = curl_exec( $ch ); 
       $err     = curl_errno( $ch ); 
       $errmsg  = curl_error( $ch ); 
       $header  = curl_getinfo( $ch ); 
       curl_close( $ch ); 
       return $header['url']; 
    }  
    
    ?>
    
    0 讨论(0)
  • 2020-12-10 00:04

    Something like:

    $matches = array();
    preg_match_all('/http:\/\/[a-zA-Z0-9.-]+\/[a-zA-Z0-9.-]+/', $text, $matches);
    print_r($matches);
    

    You'll need to tune the regexp to get exactly what you want.

    To get the URL out, consider something as simple as:

    curl -I http://url.com/path | grep Location: | awk '{print $2}'

    0 讨论(0)
提交回复
热议问题