0

次の機能を自分のサイトに実装したいと考えています。ユーザーが何かを投稿するとき、写真へのリンクである 1 つのリンクを含めることもできます。ユーザーが次のような投稿をするとします。

Hello look at this awesome picture. It is hilarious isn't it?
http://www.google.com/image.jpg

次に、そのテキストを次のように変換する必要があります。

Hello look at this awesome picture. It is hilarious isn't it?
<a target="_blank" href="http://www.google.com/image.jpg">
    <img src="http://www.google.com/image.jpg" alt=""/>
</a> 

そのため、テキストからリンクを検索し、リンクが見つかった場合は画像へのリンクをチェックする php スクリプトが必要です。また、http で始まらないリンクと、https で始まるリンクも認識できる必要があります。

どうやってそれをしますか?

どうもありがとう :)

デニス

4

2 に答える 2

2

これらの 2 つのリンクを組み合わせるとどうなりますか。

URLがPHPの画像であるかどうかを判断する最良の方法

PHP 正規表現テキスト URL から HTML リンクへ

$url="http://google.com/image.jpg";

function isImage( $url ){
  $pos = strrpos( $url, ".");
    if ($pos === false)
      return false;
    $ext = strtolower(trim(substr( $url, $pos)));
    $imgExts = array(".gif", ".jpg", ".jpeg", ".png", ".tiff", ".tif"); // this is far from complete but that's always going to be the case...
    if ( in_array($ext, $imgExts) )
      return true;
return false;
}

$test=isImage($url);
if($test){
  $pattern = '/((?:[\w\d]+\:\/\/)?(?:[\w\-\d]+\.)+[\w\-\d]+(?:\/[\w\-\d]+)*(?:\/|\.[\w\-\d]+)?(?:\?[\w\-\d]+\=[\w\-\d]+\&?)?(?:\#[\w\-\d]*)?)/';
  $replace = '<a href="$1">$1</a>';
  $msg = preg_replace( $pattern , $replace , $msg );
  return stripslashes( utf8_encode( $msg ) );
}
于 2012-05-06T16:20:19.543 に答える