ホームページ >バックエンド開発 >PHPチュートリアル >PHP関連の問題解決
PHP の問題解決
?
PHP の問題解決:
?
1: 文字列エスケープ関数:?
?
?1>mysql データベースエスケープ関数を挿入: mysqli_escape_string();
?2>addslashes() はバックスラッシュを使用して文字列を引用します
? 説明: データベースクエリステートメントなどの特定の文字の前にバックスラッシュを追加した文字列を返します。
? これらの文字は一重引用符 (')、バックスラッシュ ()、および NUL (NULL 文字) です。
? 注: デフォルトでは、PHP 命令 magic_quotes_gpc がオンになっており、主にすべての GET、POST、COOKIE データに対して addslashes() が自動的に実行されます。
magic_quotes_gpc によってエスケープされた文字列に対して addslashes() を使用しないでください。二重エスケープが発生するためです。
この状況が発生した場合は、関数 get_magic_quotes_gpc() を使用してそれを検出できます。
?3>ストリップスラッシュ()?
この関数は文字列からバックスラッシュ文字を削除できます。バックスラッシュが 2 つ連続している場合は、1 つを削除し、1 つを残します。バックスラッシュが 1 つしかない場合は、それを削除してください。
?4> 事前定義された文字を HTML エンティティに変換します。?5> htmlspecialchars_decode いくつかの事前定義された HTML エンティティを文字に変換します。
?6> HTML エンティティを文字に変換しますか??7> ? 文字を HTML エンティティに変換します ?
??
2: ファイル http ダウンロード方法:
header( "Content-type: application" );
header( "Content-Disposition:attachment; filename=$filename" );
header( "Content-Description: PHP で生成されたデータ" );
echo $str_contents;
??
3: ファイル機能file_get_contents();
ファイル全体を文字列に読み取りますか?
?
構文: file_get_contents ( string filename [, bool use_include_path [, resource context [, int offset [, int maxlen]]]] )
file_get_contents() がファイルを文字列に読み取る点を除き、file() と同じです。長さ maxlen の内容は、offset パラメーターで指定された位置から読み取られます。
失敗した場合、file_get_contents() は FALSE を返します。 ?
file_get_contents() 関数は、ファイルの内容を文字列として読み取る場合に推奨される方法です。オペレーティング システムがメモリ マッピング テクノロジをサポートしている場合は、パフォーマンスを向上させるためにメモリ マッピング テクノロジも使用されます。 ?
注:?
特殊文字 (スペースなど) を含む URL を開きたい場合は、URL エンコードに urlencode() を使用する必要があります。 ?
注:?
コンテキストパラメータは NULL で無視できます。
??
4: ターン:header("location:index.php")
?
5: JavaScript URL エンコード方式の比較:escape、encodeURI、encodeURIComponent
JavaScript で URL 文字列をエンコードするには、escape()、encodeURI()、encodeURIComponent() などのメソッドがいくつかあります。これらのエンコーディングはさまざまな役割を果たします。
escape() メソッド:
ISO ラテン文字セットを使用して、指定された文字列をエンコードします。すべてのスペース、句読点、特殊文字、およびその他の非 ASCII 文字は、%xx 形式の文字エンコーディングに変換されます (xx は、文字セット テーブル内の文字エンコーディングの 16 進数と同じです)。たとえば、スペース文字に対応するエンコーディングは %20 です。 このメソッドでエンコードされない文字: @ * / +
encodeURI() メソッド:
UTF-8 エンコード形式を使用して、URI 文字列をエスケープ形式文字列に変換します。 このメソッドでエンコードされない文字: ! @ # $& * ( ) = : / ;
encodeURIComponent() メソッド:
UTF-8 エンコード形式を使用して、URI 文字列をエスケープ形式文字列に変換します。 encodeURI() と比較して、このメソッドは / やその他の文字など、より多くの文字をエンコードします。したがって、文字列に URI の複数の部分が含まれている場合、このメソッドを使用してエンコードすることはできません。そうしないと、/ 文字がエンコードされた後で URL にエラーが表示されます。このメソッドでエンコードされない文字: ! * ( ) '
したがって、中国語の文字列の場合、文字列エンコード形式を UTF-8 形式に変換したくない場合 (たとえば、元のページとターゲット ページの文字セットが一致している場合)、エスケープを使用するだけで済みます。 。ページが GB2312 またはその他のエンコードで、パラメーターを受け入れるページが UTF-8 エンコードされている場合は、encodeURI または encodeURIComponent を使用する必要があります。
また、javascript1.5以降にencodeURI/encodeURIComponentが導入され、javascript1.0ではエスケープが利用可能になりました。
?
?
if( function_exists('mb_detect_encoding') ){
$file_encoding = ?mb_detect_encoding($tdv,array("GB2312","GBK","UTF-8"));
if( strtoupper($file_encoding) !=='GB2312' ){
$tdv = iconv("UTF-8","GB2312//IGNORE",$tdv);
}
}
?
?
?
プ