【问题标题】:PHP: Detect url in text, check if url is image or website and then echo imagePHP:检测文本中的 url,检查 url 是图像还是网站,然后回显图像
【发布时间】:2014-10-10 11:48:27
【问题描述】:

所以我正在做一个项目,我需要做的是我有一些文本,在那个文本中它有很多单词,然后是一个 url,它是一个图像。我首先需要做的是,检测该 url 是网站还是图像,然后如果它是图像,我需要显示带有 <img> 标签的图像,如果是网站,则使用 @ 回显 url 987654322@ 标签。到目前为止,我有一个脚本来检测它是 url 还是图像,但我仍然需要在文本中回显图像或 url。这是脚本:

<?php
function detectImage($url) {
    $url_headers=get_headers($url, 1);
    if(isset($url_headers['Content-Type'])){
        $type=strtolower($url_headers['Content-Type']);
        $valid_image_type=array();
        $valid_image_type['image/png']='';
        $valid_image_type['image/jpg']='';
        $valid_image_type['image/jpeg']='';
        $valid_image_type['image/jpe']='';
        $valid_image_type['image/gif']='';
        $valid_image_type['image/tif']='';
        $valid_image_type['image/tiff']='';
        $valid_image_type['image/svg']='';
        $valid_image_type['image/ico']='';
        $valid_image_type['image/icon']='';
        $valid_image_type['image/x-icon']='';
        if(isset($valid_image_type[$type])){
            echo "url is image";
        } else {
            echo "url is website";
        }
    }
}
?>

【问题讨论】:

    标签: javascript php html image url


    【解决方案1】:

    函数是一个例程,它返回一个可以在您的程序中使用的值。 不要使用函数来输出东西。将你的函数重写为:

    <?php
    function isValidImage($url) {
        $url_headers=get_headers($url, 1);
        if(isset($url_headers['Content-Type'])){
            $type=strtolower($url_headers['Content-Type']);
            $valid_image_type=array();
            $valid_image_type['image/png']='';
            $valid_image_type['image/jpg']='';
            $valid_image_type['image/jpeg']='';
            $valid_image_type['image/jpe']='';
            $valid_image_type['image/gif']='';
            $valid_image_type['image/tif']='';
            $valid_image_type['image/tiff']='';
            $valid_image_type['image/svg']='';
            $valid_image_type['image/ico']='';
            $valid_image_type['image/icon']='';
            $valid_image_type['image/x-icon']='';
            if(isset($valid_image_type[$type])){
                return true; // Its an image
            }
            return false;// Its an URL
        }
    }
    

    然后在你的逻辑中使用函数:

    <?php
    $urls = [
        'http://www.google.be',
        'http://hearstcommerce.ca/customcontent/members/premium/sample.jpg',
    ];
    
    foreach($urls as $url) {
       if (isValidImage($url) {
          echo '<img src="'.$url.'" />';
       }else{
          echo '<a href="'.$url.'">'.$url.'</a>';
       }
    }
    

    【讨论】:

      【解决方案2】:

      很简单

      if(isset($valid_image_type[$type])){
          $ech = '<img src="'.$url.'"/>';  
      } else {
          $ech = '<a href=".'$url'.">".'$url'."<a>';
      }
      echo $ech;
      

      【讨论】:

      • 但是,如果字符串中也有文本,例如“hellp image.image”,该脚本仅适用于图像,不适用于文本。
      • 所以首先你必须在字符串中找到 http:// 并且从那里到第一个 " " 空格是你正在寻找的 url,然后你使用你的函数
      【解决方案3】:

      好的,我设法解决了,我的解决方案是

             ?>    
             function detectImage($url) {
              $url_headers=get_headers($url, 1);
              if(isset($url_headers['Content-Type'])){
                  $type=strtolower($url_headers['Content-Type']);
                  $valid_image_type=array();
                  $valid_image_type['image/png']='';
                  $valid_image_type['image/jpg']='';
                  $valid_image_type['image/jpeg']='';
                  $valid_image_type['image/jpe']='';
                  $valid_image_type['image/gif']='';
                  $valid_image_type['image/tif']='';
                  $valid_image_type['image/tiff']='';
                  $valid_image_type['image/svg']='';
                  $valid_image_type['image/ico']='';
                  $valid_image_type['image/icon']='';
                  $valid_image_type['image/x-icon']='';
                  if(isset($valid_image_type[$type])){
                      return true;
                  } else {
                      return false;
                  }
              }
          }
          function detectLink($string) {
              $content_array = explode(" ", $string);
              $output = '';
              foreach($content_array as $content) {
                  if(substr($content, 0, 7) == "http://" || substr($content, 0, 4) == "www.") {
                      if (detectImage($content)===true) {
                          $content = '<img src="'.$content.'">';
                      } else {
                          $content = '<a href="'.$content.'">'.$content.'</a>';
                      }
                  }
                  $output .= " " . $content;
              }
              $output = trim($output);
              return $output;
          }
      ?>
      

      任何人都可以随意使用!

      【讨论】:

        猜你喜欢
        • 2023-03-07
        • 1970-01-01
        • 1970-01-01
        • 2012-05-02
        • 2016-01-03
        • 1970-01-01
        • 2019-02-09
        • 2011-04-10
        • 1970-01-01
        相关资源
        最近更新 更多