在 PHP 中转换各种智能引号
智能引号是标准引号的常见变体,在排版中用于增强可读性和美观性文字的吸引力。为了确保在处理文本时将这些智能引号正确转换为常规引号,必须考虑在不同上下文中使用的各种智能引号字符。
改进的智能引号转换功能:
以下增强功能通过合并各种智能引号字符的全面映射来解决您提供的原始功能的缺点。它利用字符映射 ($chr_map) 和预先计算的数组($chr 和 $rpl)来实现最佳效率:
<code class="php">$chr_map = array( "\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 "\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); // but: for efficiency you should $rpl = array_values($chr_map); // pre-calculate these two arrays $str = str_replace($chr, $rpl, html_entity_decode($str, ENT_QUOTES, "UTF-8"));</code>
此改进的函数采用符合 Unicode 的方法,涵盖了全面的范围智能引号字符。通过利用预先计算的数组,它保持高效率,同时确保智能报价准确转换为标准报价。
其他注意事项:
以上是如何在PHP中转换各种智能引号?的详细内容。更多信息请关注PHP中文网其他相关文章!