[PHP-users 10402] Re: HTMLファイルからの文字列除去

Osamu Shigematsu php-users@php.gr.jp
Fri, 27 Sep 2002 19:51:33 +0900


重松です。こんにちは。

元の質問者の方の意図がほとんど理解できていないのですが...

On Friday, September 27, 2002, at 05:54  PM, HAMAI Kyoichi wrote:
>>> Redhat Linux 7.1上でPHP 4.0.4を動かしてプログラミングをしているのですが、
>>> DB上に登録してあるURLアドレスを参照し、HTMLファイルを file($filename)で
>>> 配列に確保し、配列をひとつの文字列変数に変換し表示するというように
>>> プログラムを組んだ場合に、下記のようなHTML情報となり表示画面のデザインが
>>> 壊れてしまうんです。
>>
>> 失礼ですが、そのプログラムのバグで、「配列に確保し、配列をひとつの
>> 文字列変数に変換」する課程で順番が入れ替わったり、重複したりして
>> HTMLの構造を壊しているのでは?
>>
>> まず、正しく変換しているかが問題でしょう。
>
> サンプル1を見ると、あるHTMLファイルの<td>タグと</td>タグの間に別の
> HTMLファイルを割り込ませたように思えます。もしそうなら、表示画面の
> デザインが壊れるのは当然です。

htmlspecialchars() をおすすめしたいですね。

というか、それ以前に質問者はマニュアル読んでるのでしょうかね。
http://www.php.net/manual/ja/function.file.php

多分やりたいことズバリがサンプルにあるのではと思うんですが。

マニュアルのサンプルを別の書き方すると以下のようにもできますし。

$escaped = array();
if(is_array($lines = @file($path_to_html)){
	foreach($lines as $line) $escaped[] = htmlspecialchars($line);
}

で、ついでに言えば、世の中には、

<img src="path/to/imge_file.jpg" alt="画像です"
/>

のようにして、tag の内部で改行を入れる常識もありますが、
< と > が同じ行に入っていないこともあるわけで、
その辺とか、ちゃんと考慮していたのかも気になりますが、
いずれにしても、どう言うコードを書いたのかわからないので、
問題を特定しようがないですね。

-- 
Osamu Shigematsu