お世話になります。
下記につきまして、お知恵をお借りできますと幸いです。
宜しくお願い致します。
1、やりたいこと
別htmlファイルのテキストエリア(name="comment")に入力しsubmtした文字列から、
URLの部分を正規表現で抽出(該当する部分全て)し、画像アドレスか通常の
URLか分岐をさせた上で処理を行うこと
※hatenaやガールズちゃんねるの引用機能のようなものを
機能要件としてイメージしております
2、問題、つまづいている点
テキストエリアにURLを1つだけ(他には文字列を入力しない)入力した場合はちゃんと
最後まで処理ができるのですが、複数のURLをテキストエリアに入力した場合、
正規表現で抽出できない(//URLかどうかチェックでURLとして抽出できない)状況でございます。
3、お伺い自体事項
上記やりたいことに対して、どこを修正すると解決できるのか、
もしよろしければご教示頂けますと幸いでございます。
宜しくお願い致します。
<?php //画像と引用に関しての分岐処理 $base = htmlspecialchars($_POST['comment'],ENT_QUOTES,'utf-8'); $base = nl2br($base); //URLかどうかチェック if (preg_match_all('/^(https?|ftp)(://[-_.!~*\'()a-zA-Z0-9;/?:\@&=+$,%#]+)$/', $base , $result)) { //URL認識 $path = $result[0][0]; //URLが生きているかどうかチェック $response = get_headers( $path ); if( strpos( $response[0],'OK' ) ) { $a = (get_headers($path,1)); //画像ファイルかどうかチェック if($a['Content-Type']=='image/jpeg' or $a['Content-Type']=='image/png' or $a['Content-Type']=='image/gif' or $a['Content-Type']=='image/svg+xml') { //画像ファイルとして格納 $img_url = $path; $img_output = "<img src='$img_url' style='width:300px; height:200px; border-radius:5px; margin:10px;'>"; $pattern = '/^(https?|ftp)(://[-_.!~*\'()a-zA-Z0-9;/?:\@&=+$,%#]+)$/'; $img_last = preg_replace($pattern,$img_output,$path); echo $comment."<br>"; echo $img_last; $comment = $img_last; }else { //引用として処理 echo "引用処理"; require_once("phpQuery-onefile.php"); $html = file_get_contents($path); $doc = phpQuery::newDocument($html); $content = $doc['body']->text()."\r\n"; $description = $doc['meta[name=description]']->attr('content'); //識別可能なURLへ転換 $quote_url = $path; $quote_output = "quotedone:".$quote_url; $quote_pattern = '/^(https?|ftp)(://[-_.!~*\'()a-zA-Z0-9;/?:\@&=+$,%#]+)$/'; $quote_last = preg_replace($quote_pattern,$quote_output,$quote_url); echo $quote_last; } }{ //URL Not Found } } ?>
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/12/20 07:17
2017/12/20 08:08 編集
退会済みユーザー
2017/12/20 08:59
2017/12/20 10:06
退会済みユーザー
2017/12/20 11:56