[PHP-users 11379] Re: エスケープするという言葉の意味

HOTTA Michihide php-users@php.gr.jp
Fri, 08 Nov 2002 23:51:25 +0900


堀田@諌早市%筋金入りの文系、です。

eizo wrote:
> pg_escape_string関数をPHPマニュアルで調べると「テキスト/文字型用
> の文字列をエスケープする 」とあるんですが、文系人間なものでこの
> 「エスケープする」という言葉の意味がわかりません。

たしかにあのマニュアルの説明では、前提知識がないとわかりにくい
ですね。

エスケープは「次の文字が持つ特殊な意味を打ち消す」の意味として
よく使われています。わからなければ、ためしてみればよいのです。
で、早速使ってみますと、

hotta@star ~$ cat a.php
<?php
printf("PHP version=%s\n", PHP_VERSION);
$a="1234567890-^\!\"#$%&'()~=~|";
printf("original=%s\n", $a);
printf("escaped =%s\n", pg_escape_string($a));
?>
hotta@star ~$ php -q a.php
PHP version=4.2.3
original=1234567890-^\!"#$%&'()~=~|
<br />
<b>Fatal error</b>:  Call to undefined function:  pg_escape_string()
in <b>/home/hotta/a.php</b> on line <b>5</b><br />

む?(汗)

マニュアルには (PHP 4 >= 4.2.0) とか書いているのですが、新しめの
やつでないダメなのかも。4.3.0 系だと使えました。マニュアルのバグ?

hotta@star ~$ ./rpm/BUILD/php4-200211030600/sapi/cgi/php-cgi -q a.php
PHP version=4.3.0-dev
original=1234567890-^\!"#$%&'()~=~|
escaped =1234567890-^\\!"#$%&''()~=~|

何がどう変わったのか、そしてそれらの意味を考えてみてください。

# 私も何かわからないことがある時、すぐ
# 「ふん、どうせオレは文系さ」とうそぶきがちなのですが、
# きしだくんに怒られそうなので、今後はやめておきます:-)
-- 
堀田 倫英 <hotta@net-newbie.com> <http://www.net-newbie.com>