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

dearsallychan@yahoo.com.au dearsallychan @ yahoo.com.au
2005年 12月 3日 (土) 14:59:57 JST


恥ずかしながら、コードは以下のような感じなのですが、出来上がった結果を見ると、改行が半角スペースに変換されており、このままでは区切りがわかりません。
欲しい値は取得できているのですが、これらをきれいにタブ区切りにしていく作業のアイデアが浮かびません。
整形する時点で間違っているのかも・・・と思うのですが、いかがなものでしょうか? 

ご助言宜しくお願いします。

<?
$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);

$fp2 = fopen($newlog, "w") or die();
flock($fp2, LOCK_EX);
fputs($fp2, $html);
flock($fp2, LOCK_UN);
fclose($fp2);
@chmod($dat2, 0666);

?>

---------------
kako.html
---------------
<table>
 <tr>
  <td align="center"><img src="icon/1.gif" border="0" width="10"
height="10"></td>
  <td>No.1 タイトルはここ<br>
<table cellspacing="0" cellpadding="0" border="0" bgcolor="white">
 <tr valign="top">
  <td><a href="mailto:my @ homepage.com">my @ homepage.com</a></td>
  <td><a href="http://homepage.com"
target="_top">http://homepage.com</a></td>
 </tr>
 <tr valign="top">
  <td colspan="2">投稿内容。たまに<a href="http://yahoo.co.jp"
target="_top">リンク</a>もあります。</td>
 </tr>
</table>
  </td>
 </tr>

 <tr>
  <td align="center"><img src="icon/2.gif" border="0" width="10"
height="10"></td>
  <td>No.2 タイトル22222<br>
<table cellspacing="0" cellpadding="0" border="0" bgcolor="white">
 <tr valign="top">
  <td><a href="mailto:my2 @ homepage.com">my2 @ homepage.com</a></td>
  <td><a href="http://homepage2.com"
target="_top">http://homepage2.com</a></td>
 </tr>
 <tr valign="top">
  <td colspan="2">22222投稿内容。たまに<a href="http://222yahoo.co.jp"
target="_top">リンク222</a>もあります。</td>
 </tr>
</table>
  </td>
 </tr>

 <tr>
  <td align="center"><img src="icon/3.gif" border="0" width="10"
height="10"></td>
  <td>No.3 タイトル3<br>
<table cellspacing="0" cellpadding="0" border="0" bgcolor="white">
 <tr valign="top">
  <td><a href="mailto:my3 @ homepage.com">my3 @ homepage.com</a></td>
  <td><a href="http://homepage3.com"
target="_top">http://homepage3.com</a></td>
 </tr>
 <tr valign="top">
  <td colspan="2">333 33 333 33</td>
 </tr>
</table>
  </td>
 </tr>
</table>


----- Original Message ----- 
From: "Seto" <seto @ 1kg.jp>
To: "PHP-users ML" <php-users @ php.gr.jp>
Sent: Saturday, December 03, 2005 1:49 AM
Subject: [PHP-users 27743] Re:定型フォーマットのログ変換


>  Setoです。
>
>>ところで、
>>
>>> 2.substrで
>>>    先頭の" <tr>\n  <td align=\"center\"><img src=\"icon/"と
>>>    末尾の"</td>\n </tr>\n</table>\n  </td>\n </tr>\n"を削除
>>
>>の部分ですが、substrで2行以上の処理が出来るとは知りませんでした。
>>Google で色々調べたのですが、改行コード入りの例は見つかりませんでした。
>>substrで複数行を削除する方法を教えていただければ嬉しいです。
>>宜しくお願いします。
>
> 私と認識がずれているだけだかも知れませんが
> 途中に改行コードが入っていて(複数行)も
> 文字列であることに変わりはないですよね。
> どんなふうにやってみました?
>
> Junya Seto
> _______________________________________________
> PHP-users mailing list  PHP-users @ php.gr.jp
> http://ns1.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://www.php.gr.jp/php/novice.php3
> 




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