「うまく置換されません」というのは、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);
▽3
●
asatoryu ●100ポイント ベストアンサー |
置換後の文字列は$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); ?>