ホームページ  >  記事  >  バックエンド開発  >  PHP でスマート引用符を通常の引用符に効果的に変換するにはどうすればよいですか?

PHP でスマート引用符を通常の引用符に効果的に変換するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-22 06:48:30833ブラウズ

How to Effectively Convert Smart Quotes to Regular Quotes in PHP?

PHP でのスマート引用符の変換: 徹底的なソリューション

スマート引用符は、テキスト内の直接の発話または引用を示すために使用される活字記号です。読みやすさを向上させ、書かれたコンテンツにニュアンスを加えることができます。ただし、PHP などのプログラミング言語でスマート クオートを使用するには、正確な表示と変換を保証するための適切な処理が必要です。

問題ステートメント

提供されている PHP 関数は、さまざまな型を変換することを目的としています。スマート引用符から通常の (ストレートな) 引用符へ。ただし、すべての見積変動を処理するための包括的なサポートが不足しています。課題は、スマート クオートを表すすべての可能な Unicode 文字を識別し、堅牢な変換メカニズムを実装することにあります。

解決策

すべての種類のスマート クオートを効果的に変換するには、次のことが必要です。さまざまな Unicode 文字とそれに対応する通常の引用符との間の包括的なマッピングを作成します。次のコード スニペットは、拡張されたソリューションを提供します。

<code class="php">$chr_map = array(
    // Windows codepage 1252
    "\xC2\x82" => "'", // U+0082⇒U+201A single low-9 quotation mark
    "\xC2\x84" => '"', // U+0084⇒U+201E double low-9 quotation mark
    "\xC2\x8B" => "'", // U+008B⇒U+2039 single left-pointing angle quotation mark
    "\xC2\x91" => "'", // U+0091⇒U+2018 left single quotation mark
    "\xC2\x92" => "'", // U+0092⇒U+2019 right single quotation mark
    "\xC2\x93" => '"', // U+0093⇒U+201C left double quotation mark
    "\xC2\x94" => '"', // U+0094⇒U+201D right double quotation mark
    "\xC2\x9B" => "'", // U+009B⇒U+203A single right-pointing angle quotation mark

    // Regular Unicode
    "\xC2\xAB"     => '"', // U+00AB left-pointing double angle quotation mark
    "\xC2\xBB"     => '"', // U+00BB right-pointing double angle quotation mark
    "\xE2\x80\x98" => "'", // U+2018 left single quotation mark
    "\xE2\x80\x99" => "'", // U+2019 right single quotation mark
    "\xE2\x80\x9A" => "'", // U+201A single low-9 quotation mark
    "\xE2\x80\x9B" => "'", // U+201B single high-reversed-9 quotation mark
    "\xE2\x80\x9C" => '"', // U+201C left double quotation mark
    "\xE2\x80\x9D" => '"', // U+201D right double quotation mark
    "\xE2\x80\x9E" => '"', // U+201E double low-9 quotation mark
    "\xE2\x80\x9F" => '"', // U+201F double high-reversed-9 quotation mark
    "\xE2\x80\xB9" => "'", // U+2039 single left-pointing angle quotation mark
    "\xE2\x80\xBA" => "'", // U+203A single right-pointing angle quotation mark
);

$chr = array_keys  ($chr_map);
$rpl = array_values($chr_map);
$str = str_replace($chr, $rpl, html_entity_decode($str, ENT_QUOTES, "UTF-8"));</code>

この拡張バージョンでは、Windows コードページ 1252 と通常の Unicode 文字の両方が考慮され、包括的な変換が保証されます。

追加の考慮事項

  1. Unicode エンコーディング: 提供されるソリューションは UTF-8 エンコーディングを前提としています。入力テキストが異なる方法でエンコードされている場合は、変換を適用する前に UTF-8 に変換する必要があります。
  2. 正規化: 入力にさまざまなソースからの文字が含まれることが予想される場合、エンコードの正規化により、
  3. パフォーマンス: 大規模なテキスト データセットの場合は、文字置換配列を事前に計算して変換プロセスを最適化することを検討してください。これにより、繰り返しの関数呼び出しが回避され、パフォーマンスが向上します。

これらのガイドラインに従うことで、PHP で堅牢かつ包括的なスマート引用符変換メカニズムを実装し、さまざまな引用符のバリエーションを正確に処理できます。

以上がPHP でスマート引用符を通常の引用符に効果的に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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