<?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]);
?>
を実行してもうまく置換されません。
どこが悪いのでしょうか?
置換後の文字列は$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); ?>
「うまく置換されません」というのは、URL 先の head タグの中身がそのまま a.txt に書き出され、"meta" が "a" に変わっていない、ということでしょうか。
str_replace 関数は、変換された文字列が、関数の返り値として取得できます。
なので a.txt に書き出すべきなのは $arr[1] ではなく、$sResult だと思います。
参考。
http://php.net/manual/ja/function.str-replace.php
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);
置換後の文字列は$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); ?>
コメント(0件)