[PHP-users 27749] Re: 定型フォーマットのログ変換

Seto seto @ 1kg.jp
2005年 12月 3日 (土) 18:43:20 JST


 Setoです。

コードがあっているか否かは正直見ておりません。
その点はご了承ください。

>恥ずかしながら、コードは以下のような感じなのですが、出来上がった結果を見る
>と、改行が半角スペースに変換されており、このままでは区切りがわかりません。

これは改行が半角スペースに変換されているわけではありません。
元データのタグ前のスペースが残っているだけです。

>欲しい値は取得できているのですが、これらをきれいにタブ区切りにしていく作業
>のアイデアが浮かびません。
>整形する時点で間違っているのかも・・・と思うのですが、いかがなものでしょう
>か? 

今のコーディングをもう少し練るならば
1.タグ前のスペースもパターンマッチに入れて除去する。
>$html = preg_replace("/<\/?[^>]*>/", "", $html);
$html = preg_replace("/[ ]*<\/?[^>]*>/", "", $html);

2.置換のときに一緒にタブを挿入しておく
たとえば
>$html = preg_replace('/<a\s+.*?href="([^"]+)"[^>]*>([^<]+)<\/a>/is', 
>'\2(\1)', $html);
$html = preg_replace('/<a\s+.*?href="([^"]+)"[^>]*>([^<]+)<\/a>/is', 
'\2(\1)	', $html);
//     ↑ここにタブを入れておく

他のreplaceにも必要に応じてタブを入れる。

3.更に投稿データのアンカー部分に影響しないよう引数を指定
$html = preg_replace('/<a\s+.*?href="([^"]+)"[^>]*>([^<]+)<\/a>/is', 
'\2(\1)	', $html, 2);
//                ↑


こんな風にいじっていけばもう少し進みそうですけど・・・
#このままで最後まで行き着けるかどうかちょっと心配^^

>
>ご助言宜しくお願いします。
>
><?
>$oldlog = "kako.html";
>$newlog = "kako2.html";
>$html = implode ('', file ($oldlog));
>
>$html = preg_replace('/<a\s+.*?href="([^"]+)"[^>]*>([^<]+)<\/a>/is', 
>'\2(\1)', $html);
>$html = preg_replace('/<img\s+.*?src="icon\/(.+?)\"\s+.*?>/is', '\1', 
>$html);
>$html = preg_replace('/No.([0-9]+) ([^"]+)/is', '\1 \2', $html); // タブ区
>切り 
>
>$html = str_replace('</table>', '-- end --', $html);
>$html = preg_replace("/<\/?[^>]*>/", "", $html);
>$html = str_replace("\n", "", $html);
>$html = str_replace("\r", "", $html);
>$html = str_replace('-- end --', "\n", $html);
>
>
>?>

Junya Seto


PHP-users メーリングリストの案内