ホームページ  >  記事  >  バックエンド開発  >  PHP は、事前定義された文字の前にバックスラッシュを追加する関数 addslashes() を返します

PHP は、事前定義された文字の前にバックスラッシュを追加する関数 addslashes() を返します

黄舟
黄舟オリジナル
2017-11-02 09:45:442091ブラウズ

各二重引用符 (") の前にバックスラッシュを追加します:

<?php 
$str = addslashes(&#39;What does "yolo" mean?&#39;);
echo($str); 
?>

定義と使用法

addslashes() 関数は、事前定義された文字の前にバックスラッシュを含む文字列を返します。

事前定義された文字は次のとおりです:

一重引用符 (' )

二重引用符 (")

バックスラッシュ ()

NULL

ヒント: この関数は、データベースに保存されている文字列およびデータベース クエリ ステートメントの文字列に適切な文字を準備するために使用できます。

注: デフォルトでは、PHP 命令 magic_quotes_gpc がオンになっており、すべての GET、POST、COOKIE データに対して addslashes() が自動的に実行されます。 magic_quotes_gpc によってエスケープされた文字列に対して addslashes() を使用しないでください。二重エスケープが発生するためです。この状況が発生した場合は、関数 get_magic_quotes_gpc() を使用してそれを検出できます。

構文

addslashes(string)

パラメータ説明文字列必須。エスケープする文字列を指定します。
技術的な詳細

戻り値: エスケープされた文字列を返します。 PHPバージョン: 4+

更多实例

向字符串中的预定义字符添加反斜杠:

<?php
$str = "Who&#39;s Peter Griffin?";
echo $str . " This is not safe in a database query.<br>";
echo addslashes($str) . " This is safe in a database query.";
?>

php addslashes函数的作用是在预定义的字符前面加上反斜杠,这些预定义字符包括:

单引号(')

双引号(")

反斜杠(\)

NULL

addslashes函数经常使用在向数据库插入数据时,比如有一个字符串

$str="my name&#39;s wxp";

现在要将这个字符串插入到数据库表中,由于该字符串有单引号',这样很可能与mysql拼接字符串的单引号'冲突,导致SQL语句不正确,也就无法正常执行插入操作,此时我们需要使用addslashes函数处理这个字符串。如:

$str="my name&#39;s wxp";echo addslashes($str);//输出my name\'s wxp

然后在拼接mysql字符串:

$sql="insert into student(student_name)values(&#39;".addslashes($str)."&#39;)";
mysql_query($sql);

此时字符串被插入到数据库,那么大家是否知道插入的字符串是带反斜杠还是不带反斜杠呢?恐怕很多人都会认为肯定是带反斜杠的字符串。其实这个答案是错误的,插入的字符串是没有带反斜杠。至于为什么插入的字符串在数据库中是没有加反斜杠,请大家继续看下面讲解。

如果字符串$str="my name's wxp"是使用POST和GET提交的数据,这个时候插入数据库中的数据是带反斜杠的,由此可知addslashes只是在POST和GET数据插入数据库时才会把反斜杠同时插入到数据库,其他情况下不会将反斜杠插入到数据库。

以上がPHP は、事前定義された文字の前にバックスラッシュを追加する関数 addslashes() を返しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。