ホームページ >バックエンド開発 >PHPチュートリアル >PHP出力制御機能の簡体字・繁体字変換への応用_PHPチュートリアル

PHP出力制御機能の簡体字・繁体字変換への応用_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-21 16:10:00963ブラウズ


PHP出力制御機能の簡体字・繁体字変換への応用 概要: この記事では、PHP の出力制御関数を簡単に紹介し、簡体字中国語と繁体字中国語の変換での応用に関する具体的なアイデアと例を示します

- PHP 出力制御関数の紹介
今日最も人気のあるスクリプト言語の 1 つである PHP 、シンプルな記述、高速な実行速度、優れたスケーラビリティという利点があります。 PHP の出力情報制御機能を使用すると、スクリプトによって出力されるコンテンツを制御でき、特にスクリプトが情報を出力した後にファイル ヘッダーを送信する必要がある場合や、出力情報を編集する必要がある場合に、さまざまな状況で使用できます。 。出力制御関数は、header() または setcookie() を使用して送信されるファイル ヘッダー情報には影響せず、echo()、print()、および PHP コードに類似したデータ ブロックにのみ影響します。
例 1. 制御出力
test.php
function test($str){
return str_replace("php2000","y10k",$str)
}
ob_start("test"); "hello php2000";
ob_end_flush();
?> 出力情報制御を使用しない場合、このプログラムは
hello php2000 を出力する必要があります
出力制御関数を指定すると、出力は
hello y10k になります
echo() を使用したコンテンツは、ob_end_flush() が呼び出されるかスクリプトの実行が終了するまで出力バッファーに保存され、その後、出力情報はカスタム処理関数によって処理され (内部の文字列を置き換えます)、結果が返されます。

関連関数の説明
ob_start ([string Output_callback]) - 出力バッファを開きます
すべての出力情報はブラウザに直接送信されなくなり、出力バッファに保存されます。出力結果を処理するためにオプションのコールバック関数が使用されます。情報。 。
ob_end_flush - 出力バッファの内容を終了(送信)し、出力バッファを閉じます

簡体字中国語と繁体字中国語間の変換の実装
は、一般に比較表の形式で実装されています関連記事がたくさんあるので勝ちました。ここでは詳細には触れません
function gb2big5($str) {
$leng = strlen($i = 0;) $i<$leng; $i++){
$h = ord($str[$i])
if($h>=160){
$l = ord($str[$i+1]);
$gb=($h==161 && $l==64)?" " : substr($_gb_big5_, ($h-160)*510+($l-1)*2, 2); [$i] = $gb[0] ;
$str[$i+1] = $gb[1]
}
}
$str;
;
$gb_big5_ は、big5 のフォント比較テーブルを保持します
$str は、変換される文字列です
簡体字中国語と繁体字中国語の変換における 3 つの出力制御関数の適用
現在、ほとんどの Web サイトの簡体字中国語ページと繁体字中国語ページの変換は、別々の方法で実装されていますその結果、簡体字中国語ページを変更する必要が生じ、繁体字中国語ページを再度変更する必要があり、自動同期が実現できません。私たちが提供する方法では、同じページを簡体字と繁体字の中国語表示に自動的に変換できます。実装方法は次のとおりです。
1 現在表示されている簡体字中国語と繁体字中国語のステータスを示す簡体字中国語と繁体字中国語のフラグを確立し、同時に簡体字中国語と繁体字中国語のステータスを切り替えます
php2000_gb_big5.php
if(!session_is_registered("php2000_big5")){ // 簡体字中国語と繁体字中国語のフラグの登録ステータスを確認します
session_register("php2000_big5"); //簡体字中国語と繁体字中国語のフラグ、簡体字中国語 = 1
$php2000_big5=0; // デフォルトは簡体字中国語です
}
$php2000_big5 = ($php2000_big5+1)%2; // 簡体字中国語と繁体字中国語に切り替えます
header("location:".getenv("HTTP_REFERER")); // 呼び出し元のページに戻ります
?> 各ページは、簡体字中国語と繁体字中国語の変換のためにこのプログラムを呼び出します
require.php (前の部分の 2 番目の部分の変換コードが含まれている必要がありますが、ここでは省略します)

Session_start();
$str = gb2big5($str); big5 に変換
$str = str_replace('charset=gb2312', 'charset=big5', $str); // 文字型を置換
header('Content-Type: text/html; charset=big5');繁体字中国語ファイルヘッダー
return $str;
}
if(session_is_registered("php2000_big5") && ( $php2000_big5==1)){ // 判定フラグ
$fp = fopen('big5.table', 'r') ; // big5 のフォントテーブル
$_gb_big5_ = fread($fp, filesize('big5.table ')) // データを読み込む
fclose('translate_gb2big5'); // 出力情報制御を開始
}
?>
3 使用方法は、最も簡単な例です。 require.php と同じディレクトリに配置します
test.php
require("require.php");皆さん、ここは PHP Century Network です";
?>

if($php2000_big5==1)ech​​o "GB";
else echo "Big5";
? >

最初の実行の結果は、次のようなデフォルトの簡体字中国語です
皆さん、こんにちは、PHP Century Network Big5 です
Big5 のリンクをクリックすると、次のように繁体字中国語が表示されます
皆さん、こんにちは。 PHP Century Network GB
GBをクリックして簡体字中国語ページに戻ります
セッションは簡体字中国語と繁体字中国語のフラグを保存するために使用されるため、他の用途に使用できます require.php のページは、現在のページに応じて対応するページを自動的に表示しますロゴ。その他の例については、私の Web サイト http://www.php2000.com を参照してください。
big5フォントを保存するための4つの改善された方法
big5フォントを保存するためにセッションを使用することを検討したことがありますが、使用した後、主にセッションもファイル形式で実装されているため、速度が大幅に低下することがわかり、改善されませんパフォーマンスが低下し、セッションが機能しないため、簡体字中国語と繁体字中国語のフラグに基づいてロードするかどうかが自動的に決定されるため、big5 フォントも簡体字中国語でロードされるため、速度が低下します。
使用しているサーバーが Linux なので、big5 フォント情報を保存するために共有メモリを使用することを検討しました (Windows は共有メモリをサポートしていません)。変更されたコードは require.php の判定部分です:
0xff3 セグメントに 50000 バイトの共有メモリを作成して開きます
$shm_id = @shmop_open(0xff3, "a", 0644, 50000);
if($shm_id) {
$_gb_big5_ = shmop_read($shm_id, 0, shmop_size( $shm_id)); // big5 データを読み取ります
}
else{
// システム ID 0xff3 で 50000 バイトの共有メモリ ブロックを作成します
$shm_id = @shmop_open(0xff3, "c", 0644, 50000);

//データを読み取る
$fp = fopen('big5.table', 'r');
$_gb_big5_ = fread($fp, filesize('big5.table'));
if($shm_id){
$shm_bytes_write = shmop_write($shm_id, $_gb_big5_,0); // big5 データを書き込みます
}
ob_start('translate_gb2big5')
?>
共有方法メモリを使用するには、関連情報を参照してください。
IV 結論
PHP は、オープンソースのスクリプト言語として、非常に優れたスケーラビリティを備えています。この記事では、その機能の 1 つの応用方法のみを説明し、比較的完璧な簡体字と繁体字の自動自動変換機能を同じページに実装します。 PHP を愛する友人が PHP からインスピレーションを得て、より良い作品を作ることができることを願っています。




http://www.bkjia.com/PHPjc/314354.html

www.bkjia.com

tru​​e

http://www.bkjia.com/PHPjc/314354.html

簡体字中国語と繁体字中国語の変換における PHP の出力制御関数の応用の概要: この記事では、PHP の出力制御関数を簡単に紹介し、簡体字中国語と繁体字中国語の変換におけるその応用の具体的なアイデアと例を示します...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。