ホームページ php教程 php手册 PHP对HTML编码字符串的处理

PHP对HTML编码字符串的处理

Jun 06, 2016 pm 07:55 PM
html php 対処する コーディング

今天在写一个PHP脚本访问数据库时,发现其中的中文字符串使用了HTML编码方式进行存储的(比如中文字毛对应的HTML编码为#27611;),使得在对该字段进行条件查询时不能进接使用中文进行查询,而要将其转换为编码后再进行条件匹配。 PHP中对可读性字符与HTML编

今天在写一个PHP脚本访问数据库时,发现其中的中文字符串使用了HTML编码方式进行存储的(比如中文字“毛”对应的HTML编码为“毛”),使得在对该字段进行条件查询时不能进接使用中文进行查询,而要将其转换为编码后再进行条件匹配。

        PHP中对可读性字符与HTML编码字符相互转换时需要使用到htmlentitieshtml_entity_decode函数。于是写出如下查询语句,

PHP对HTML编码字符串的处理    $sql = "select id,depart_name,first_name,last_name,local_name,extension,mobile,title ";
PHP对HTML编码字符串的处理    
$sql.= "from pb_extension e, pb_department d  ";
PHP对HTML编码字符串的处理    
$sql.= "where e.depart_id = d.depart_id  ";
PHP对HTML编码字符串的处理    
$sql.= "  and d.plant='".$plant."' ";
PHP对HTML编码字符串的处理    
$sql.= " and (first_name like '%".$HTTP_POST_VARS["q"]."%'";
PHP对HTML编码字符串的处理    
$sql.= " or last_name like '%".$HTTP_POST_VARS["q"]."%'";
PHP对HTML编码字符串的处理    
$sql.= " or local_name like '%".htmlentities($HTTP_POST_VARS["q"])."%'";
PHP对HTML编码字符串的处理    
$sql.= " or extension like '%".$HTTP_POST_VARS["q"]."%'";
PHP对HTML编码字符串的处理    
$sql.= " or mobile like '%".$HTTP_POST_VARS["q"]."%'";
PHP对HTML编码字符串的处理    
$sql.= " or depart_name like '%".$HTTP_POST_VARS["q"]."%'";
PHP对HTML编码字符串的处理    
$sql.= " or title like '%".$HTTP_POST_VARS["q"]."%'";
PHP对HTML编码字符串的处理    
$sql.= "";

并执行。可是怪是却发生了,此语句在SQL Analyzer中可以正确执行并查询出结果,而在IE中很执行这段脚本却提示查询结果为零,这是为什么呢?

        经过仔细检查这段SQL,并查看在IE中的源码,发现了问题的根结所在。查询值经htmlentities函数后转换为HTML编码,此编码中存在着特殊字符&(如第一段中的举例),在IE中这个字符是另有含义的。在IE中一般都是使用“&”来表示这个符号的,导致在IE中看到输出的SQL语句和真正执行的语句是不一样的。

        要解决这个问题就要想个办法不让IE使用“&”表示“&”符号。经过一翻查询,发现使用如下代码可以解决这个问题。

PHP对HTML编码字符串的处理php
PHP对HTML编码字符串的处理  
$trans = get_html_translation_table(HTML_ENTITIES);
PHP对HTML编码字符串的处理  
$trans = array_flip($trans);
PHP对HTML编码字符串的处理  
$encoded = "Hallo &  & Krämer";
PHP对HTML编码字符串的处理  
$original = strtr($encoded, $trans);
PHP对HTML编码字符串的处理  
echo $original;
PHP对HTML编码字符串的处理
?>

执行这段代码,输出的$original变量值为“Hallo & & Krämer”,这正是我想要的结果。

        以上是我在工作中遇到的问题及解决方法,特将其写在我的Blog上,与那些遇到和我相似问题的朋友们一起分享。



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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

CakePHP プロジェクトの構成 CakePHP プロジェクトの構成 Sep 10, 2024 pm 05:25 PM

この章では、CakePHP の環境変数、一般設定、データベース設定、電子メール設定について理解します。

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP ルーティング CakePHP ルーティング Sep 10, 2024 pm 05:25 PM

この章では、ルーティングに関連する次のトピックを学習します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

HTML テーブルのレイアウト HTML テーブルのレイアウト Sep 04, 2024 pm 04:54 PM

HTML テーブル レイアウトのガイド。ここでは、HTML テーブル レイアウトの値と例および出力について詳しく説明します。

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

See all articles