![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
お世話になっております。
昨日も同じような質問をさせていただいたのですが、htmlファイルの内容をPOSTで取得したとき、そのソース内にある、javascript、noscriptがあった場合、それぞれのタグ内にあるURLを配列内に取り込みたいと考えております。
そこで、これまで試していたものはもちろん、先日お教えいただいた以下のソースを参考にしているのですが、URLを取得するまでに至りません。
<?php
$html=<<<_HTML_
<SCRIPT TYPE="text/javascript" SRC="http://www.○○○.com" charset="EUC-JP"></SCRIPT>
<NOSCRIPT>
<div align="center" style="font-size:12px;">
<a href=http://www.△△△.net/>カウンター</a>
<a href=http://www.□□□.com/>アクセス解析</a>
</div>
</NOSCRIPT>
_HTML_;
$pattern_java = '/<SCRIPT TYPE= .*?SRC="(.*?)".*?>>/is';
$match_java = array();
preg_match_all($pattern_java, $html, $match_java, PREG_SET_ORDER);
$meta_java = $match_java[0][1];
$cnt_java = count($match_java);
?>
2日続けて同じような質問をすることに恐縮するとともに、お恥ずかしいことと自覚はしているものの、解決策が見いだせずに困っています。
お忙しいなか恐縮ですが、アドバイスなど頂戴出来れば幸いです。
宜しくお願い申し上げます。
No.2ベストアンサー
- 回答日時:
>> どうも自信がなく、見て頂ければ幸いに思います。
私も素人ですので的を得た意見は言えませんが・・
スクリプトに問題は無いと思います。強いて言えば
同じ処理を繰り返す場合は、関数化するともっと便利になります。
前部を略します。
_HTML_;
function getlinks($html,$tag='script'){
$match=array();
$pattern0 = '/<'.$tag.'.*?<\/'.$tag.'/is';
$pattern1 = '/https?[^"\'> ]*/i';
preg_match_all($pattern0, $html, $match0);
foreach($match0[0] as $val){
preg_match_all($pattern1, $val, $match1);
$match=array_merge($match,$match1[0]);
}
return $match;
}
print_r(getlinks($html));
print_r(getlinks($html,'noscript'));
?>
こんな感じにしておけば他のタグにも応用ができます。
こんばんは。お世話になっております。
お疲れのところ早速の回答をありがとう御座います!
>同じ処理を繰り返す場合は、関数化するともっと便利になります。
なるほど・・この「関数化」というものに手を出したことがありませんが、色々な使い方が出来るのですね。勉強になります。
以上、ご回答と共に、ご親切なアドバイスをありがとう御座いました!
No.1
- 回答日時:
こんな感じかな
php
<?php
$html=<<<_HTML_
<SCRIPT TYPE="text/javascript" SRC="http://www.○○○.com" charset="EUC-JP"></SCRIPT>
<NOSCRIPT>
<div align="center" style="font-size:12px;">
<a href=http://www.△△△.net/>カウンター</a>
<a href=http://www.□□□.com/>アクセス解析</a>
</div>
</NOSCRIPT>
_HTML_;
$match=array();
$pattern0 = '/script.*?<\/n?o?script/is';
$pattern1 = '/https?[^"\'> ]*/i';
preg_match_all($pattern0, $html, $match0);
foreach($match0[0] as $val){
preg_match_all($pattern1, $val, $match1);
$match=array_merge($match,$match1[0]);
}
print_r($match);
?>
この回答への補足
こんばんは。お世話になっております。
昨夜お教えいただいた後、scriptとnoscriptを別けて配列に入れたいとのことお伝えしましたが、とりあえず、以下のような形で別々の配列に格納することができたのですが、スクリプト的にどうも自信がなく、見て頂ければ幸いに思います。
お忙しいなか恐縮ですが、宜しくお願い申し上げます。
<?php
$html=<<<_HTML_
<SCRIPT TYPE="text/javascript" SRC="http://www.111a.com" charset="EUC-JP"></SCRIPT>
<NOSCRIPT>
<div align="center" style="font-size:12px;">
<a href=?http://www.222a.net/>カウンター</a>
<a href=?http://www.222b.com/>アクセス解析</a>
</div>
</NOSCRIPT>
<SCRIPT TYPE="text/javascript" SRC="http://www.111b.com" charset="EUC-JP"></SCRIPT>
<NOSCRIPT>
<div align="center" style="font-size:12px;">
<a href=?http://www.222c.net/>カウンター</a>
<a href=?http://www.222d.com/>アクセス解析</a>
</div>
</NOSCRIPT>
<SCRIPT TYPE="text/javascript" SRC="http://www.111c.com" charset="EUC-JP"></SCRIPT>
<NOSCRIPT>
<div align="center" style="font-size:12px;">
<a href=?http://www.222e.net/>カウンター</a>
<a href=?http://www.222f.com/>アクセス解析</a>
</div>
</NOSCRIPT>
_HTML_;
$match=array();
$pattern0 = '/<script.*?<\/script/is';
$pattern1 = '/https?[^"\'> ]*/i';
preg_match_all($pattern0, $html, $match0);
foreach($match0[0] as $val){
preg_match_all($pattern1, $val, $match1);
$match=array_merge($match,$match1[0]);
}
print_r($match);
$match=array();
$pattern0 = '/<noscript.*?<\/noscript/is';
$pattern1 = '/https?[^"\'> ]*/i';
preg_match_all($pattern0, $html, $match0);
foreach($match0[0] as $val){
preg_match_all($pattern1, $val, $match1);
$match=array_merge($match,$match1[0]);
}
print_r($match);
?>
mpxさんへ
こんばんは。お世話になっております。
昨日に引き続き、アドバイスいただきありがとう御座います!
しかも投稿後、早速の回答で感謝です。
で、説明不足なところがありましたが、
<SCRIPT TYPE="text/javascript" SRC="http://www.○○○.com" charset="EUC-JP"></SCRIPT>
と、NOSCRIPTを別けて配列に格納したいのです。(複数のスクリプトが設置されていることを想定して、別々の配列にしたい)
早速回答いただき、アドバイスを元にこちらでも解決法を見出そうとは思っているのですが、それがなかなか・・
もしお時間が許すようなら、引き続きアドバイスを頂戴できたら幸いです。もちろん、引き続きこちらでも進めてみますので、解決できましたら、補足にてご挨拶を兼ねてご報告いたします。
以上、宜しくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- JavaScript GoogleChart 階層ごとのブロックの長さを個別に設定したい 1 2022/07/06 14:27
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- JavaScript javascriptで変数を組み込みたい 2 2023/01/13 09:52
- HTML・CSS 書籍を見つつサイト造りの練習をしているのですが、見た目が一致しません 2 2022/11/28 15:00
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ソフトバンクのUSERAGENTうまく...
-
、"(ダブルクォーテーション)...
-
正規表現で「0」のみ抽出
-
電話番号のチェック ハイフン...
-
VBAを使ってHTMLソースから特定...
-
ピリオドは「文字列連結演算子...
-
PHPで変数から1行目だけを取得...
-
正規表現パターンの記入方法に...
-
PHPで<a>タグ内からURLと文字を...
-
phpでhtmlソースを解析し、文字...
-
正規表現の書き方について
-
VBAのコマンドボタンの文字列の...
-
REGEXREPLACE関数について、
-
ダブルコーテーション(
-
文字の入力で横バー上段、中断...
-
エスケープ文字の復帰(¥r)と...
-
ソースコードの1行が長いとき...
-
文の改行
-
C++で空Enterの入力を判...
-
COBOLの改行
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
preg_matchでエラーが出ます。
-
VBAを使ってHTMLソースから特定...
-
Excelで数字のみを2倍3倍にする...
-
PHPで変数から1行目だけを取得...
-
正規表現でシングルクォーテー...
-
、"(ダブルクォーテーション)...
-
正規表現で「0」のみ抽出
-
住所から特定の文字列、数値を...
-
PHPで あるフォルダ内の、特定...
-
phpでhtmlソースを解析し、文字...
-
PHPで<a>タグ内からURLと文字を...
-
正規表現で特定のHTMLタグのク...
-
PHPの正規表現で住所を分けるに...
-
Smartyを使用した、テンプレー...
-
PHPによるIPアドレスマッチ
-
正規表現で、半角大文字と半角...
-
php 正規表現で(ただし○○は除...
-
PHPメールフォーム URLと半角...
-
「半角数字」と「+」を許可する...
-
preg_matchでのマッチが正しく...
おすすめ情報