PHPの質問です

<?php
mb_internal_encoding("utf-8");
$filename = "a.txt";
$url = "http://headlines.yahoo.co.jp/hl";
$str = file_get_contents($url);
$str = mb_convert_encoding($str, "utf-8", "auto");
preg_match("/<head>(.+?)<\/head>/ismu", $str, $arr);
$sSearch = 'meta';
$sReplace = 'a';
$sResult = str_replace($sSearch, $sReplace, $arr[1]);
file_put_contents($filename, $arr[1]);
?>
を実行してもうまく置換されません。
どこが悪いのでしょうか?

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2013/04/10 00:16:39
  • 終了:2013/04/10 07:26:23

ベストアンサー

id:asatoryu No.3

asatoryu回答回数66ベストアンサー獲得回数142013/04/10 06:21:09

ポイント100pt

置換後の文字列は$sResultに代入されます。
以下のプログラムを試してみてください。

<?php
mb_internal_encoding("utf-8");
$filename = "a.txt";
$url = "http://headlines.yahoo.co.jp/hl";
$str = file_get_contents($url);
$str = mb_convert_encoding($str, "utf-8", "auto");
preg_match("/<head>(.+?)<\/head>/ismu", $str, $arr);
$sSearch = 'meta';
$sReplace = 'a';
$sResult = str_replace($sSearch, $sReplace, $arr[1]);
file_put_contents($filename, $sResult);
?>

その他の回答(2件)

id:a-kuma3 No.1

a-kuma3回答回数4562ベストアンサー獲得回数19062013/04/10 00:50:35

ポイント100pt

「うまく置換されません」というのは、URL 先の head タグの中身がそのまま a.txt に書き出され、"meta" が "a" に変わっていない、ということでしょうか。

str_replace 関数は、変換された文字列が、関数の返り値として取得できます。
なので a.txt に書き出すべきなのは $arr[1] ではなく、$sResult だと思います。

参考。
http://php.net/manual/ja/function.str-replace.php

id:Cherenkov No.2

Cherenkov回答回数1503ベストアンサー獲得回数4932013/04/10 00:57:32

ポイント100pt

mb_convert_encodingの第3引数にautoを使う場合はmb_language("Japanese");を取り敢えず書いておく。

<?php
mb_internal_encoding("utf-8");
mb_language("Japanese");
$filename = "a.txt";
$url = "http://headlines.yahoo.co.jp/hl";
$str = file_get_contents($url);
$str = mb_convert_encoding($str, "utf-8", "auto");
preg_match("/<head>(.+?)<\/head>/ismu", $str, $arr);
$sSearch = 'meta';
$sReplace = 'a';
$sResult = str_replace($sSearch, $sReplace, $arr[1]);
file_put_contents($filename, $sResult);

preg_replaceのほうがたぶんいい。(今回はいらんか)

$sSearch = '/meta/';
$sReplace = 'a';
$sResult = preg_replace($sSearch, $sReplace, $sResult);
id:asatoryu No.3

asatoryu回答回数66ベストアンサー獲得回数142013/04/10 06:21:09ここでベストアンサー

ポイント100pt

置換後の文字列は$sResultに代入されます。
以下のプログラムを試してみてください。

<?php
mb_internal_encoding("utf-8");
$filename = "a.txt";
$url = "http://headlines.yahoo.co.jp/hl";
$str = file_get_contents($url);
$str = mb_convert_encoding($str, "utf-8", "auto");
preg_match("/<head>(.+?)<\/head>/ismu", $str, $arr);
$sSearch = 'meta';
$sReplace = 'a';
$sResult = str_replace($sSearch, $sReplace, $arr[1]);
file_put_contents($filename, $sResult);
?>

コメントはまだありません

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

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

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

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