$text = $HTTP_POST_VARS['url'];


preg_match_all('/<embed(?>\s+)(?>.*?src=\"(.*?)\").*?>/ixs',$text,$matches);
for ($i=0; $i< count($matches[0]); $i++) {
$url = $matches[1][$i];

}

echo"$url";

を受け取りとして、fromより

<object width="425" height="350"><param name="movie" value="http://www.hoge.hoge"></param><embed src="http://www.hoge.hoge" type="application/x-shockwave-flash" width="425" height="350"></embed></object>

を送るとうまく抽出出来ず、
直接
$text = '<object width="425" height="350"><param name="movie" value="http://www.hoge.hoge"></param><embed src="http://www.hoge.hoge" type="application/x-shockwave-flash" width="425" height="350"></embed></object>';
とした場合はうまくhttp://www.hoge.hogeが抽出できるのですが、何がうまくないのか解りませんご教授ください。

回答の条件
  • 1人2回まで
  • 登録:2006/09/08 15:37:43
  • 終了:2006/09/08 17:26:58

回答(2件)

id:heppokoA No.1

heppokoA回答回数65ベストアンサー獲得回数72006/09/08 16:44:26

ポイント35pt

$HTTP_POST_VARSをなにかの関数内で使っている場合は,まず global $HTTP_POST_VARS; としてローカルスコープに読み込んでおく必要があります。ちなみに,PHPのバージョンが古かったらいけないですが,$HTTP_POST_VARSよりも$_POSTを使う方がおすすめです。

http://jp2.php.net/manual/ja/language.variables.scope.php

あとは,マジック・クウォートがPOSTの値にかかっていて正規表現がうまくマッチしていないのではないでしょうか?

たとえば,入力した文字で「="」があるところは,「=\"」と変換されるので,ここは正規表現にマッチしないことになります。

print $_POST["url"]; として確認してみてください。

http://jp.php.net/manual/ja/security.magicquotes.php

id:NAO8

$_POSTは試したのですがやはり駄目でした。

お~

マジッククウォートOFFで上手く取得できました。

magic_quotes_gpc = Off

でもあまりよくないんでしょうか?

なんか上手い方法ありますかね?

2006/09/08 17:03:51
id:heppokoA No.2

heppokoA回答回数65ベストアンサー獲得回数72006/09/08 17:11:48

ポイント35pt

再びheppokoAです。

http://jp2.php.net/manual/ja/function.stripslashes.php

stripslashes();が使えます。

id:NAO8

キター!解決です^^

ホント有難う御座います。

マジッククォートONでstripslashes();が上手く機能しました。

2006/09/08 17:25:45
  • id:bonlife
    PHPのマニュアルでも「コードでは、マジッククオートをオフにして 実行する際必要な時にデータをエスケープすることが望まれます。」とあります。
    http://jp.php.net/manual/ja/security.magicquotes.php
    エスケープの処理は必要な部分で適宜行うようにした方が良いです。
    (Shift-JISでクォートすべきでない文字をクォートしてしまう問題があります。)

    また、SQLインジェクション対策としても不十分ですので、設定を変更できる環境であれば、変更した方が良いです。
    その場合、magic_quotes_gpcがoffでも動くようにコードを修正する必要があります。
    SQLインジェクションの対策を行う場合は、それぞれのDB用の関数を使った方が良いでしょう。
    (例えば、MySQLの場合は、mysql_real_escape_stringを使ってください。)

    [参考] 推奨されるphp.iniの設定

    http://wiki.ohgaki.net/index.php?cmd=read&page=PHP%2Ftips%2F%BF%E4%BE%A9php.ini%C0%DF%C4%EA

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません