[PHP-users 5070] Re: 改行コードに関する質問
Hiroshi Morita
php-users@php.gr.jp
Tue, 29 Jan 2002 15:54:53 +0900
tyuu です。
もう、収束しているようですが、
DB にしまう時は <BR> ではなく \n のままが良いと思います。
> というわけで私もDB(PostgreSQL)に格納する前に<br>を挿入し、
> 次に正規表現置換関数を用いて改行コードは削除しています。
> これはDBのBKUP等でpg_dump(テキスト出力される)を使用しているのために
> フィールドデータに余計な改行コードが残っていると DBに戻すときに
> 障害となるからです。
> (これももしかしたらpg_dumpの指定で何とかなるのかな?)
以下のようにして作成された table と改行の入った値を
pg_dump と psql を利用してrestore できますよ。
# できないのかと思って調べてしまった。
-----------------8<------------------------------
CREATE SEQUENCE test_key_seq;
CREATE TABLE test (
key INTEGER DEFAULT nextval('test_key_seq'),
value TEXT,
PRIMARY KEY( key )
);
CREATE UNIQUE INDEX foo_key_seq on test( key );
INSERT INTO test(value) VALUES ( 'abc
def' );
INSERT INTO test(value) VALUES ( 'ghi
jkl' );
----------------->8------------------------------
# pg_dump [DB_NAME] > hoge
# psql [DB_NAME] -f hoge
# psql [DB_NAME]
select * from test;
で、これだけだと pgsql-jp ねたなので、
僕は DB から取り出した値をhtml を書き出す前に check しています。
なんか、もっと良いコーディングがあったら教えてください。
// $n は <TEXTAREA> 用
function print_HTML( $s, $n = '<BR>' ){
$s = str_replace( '&', '&', $s );
$s = str_replace( '>', '>', $s );
$s = str_replace( '<', '<', $s );
$s = str_replace( ' ', ' ', $s );
//$s = str_replace( "\n", '<BR>', $s );
if( "\n" != $n )
$s = str_replace( "\n", $n, $s );
return $s;
}
by tyuu.