在询问新帖子时如何删除URL中的越南口音?

时间:2015-01-20 11:27:46

标签: url question2answer

在我的question2answer网站上询问新的越南问题时,新创建的帖子将包含带有永久链接的网址,该网址是根据越南语单词创建的 - 即带有越南口音。

当共享链接时,该URL会使其变得非常漂亮。

我已在Remove accents from question URLs配置页面中启用了Admin - Viewing选项,但它没有帮助。我怎样才能找到解决办法?

enter image description here

复制时突出显示的URL将是

http://demo.question2answer.org/391/ C%C3%A2U-H%E1%BB%8Fi-C%E1%BB%A7A-TUI

1 个答案:

答案 0 :(得分:0)

正如在question2anser.org/qa上讨论here一样,这是我对此的解决方案。

  1. 修改档案<<q2aHOME>>\qa-include\util\string.php

  2. 添加新功能 qa_convert_vi_to_en

  3. 代码:

    function qa_convert_vi_to_en($str) 
    {
        $str = preg_replace('/(à|á|?|?|ã|â|?|?|?|?|?|a|?|?|?|?|?)/', 'a', $str);
        $str = preg_replace('/(è|é|?|?|?|ê|?|?|?|?|?)/', 'e', $str);
        $str = preg_replace('/(ì|í|?|?|i)/', 'i', $str);
        $str = preg_replace('/(ò|ó|?|?|õ|ô|?|?|?|?|?|o|?|?|?|?|?)/', 'o', $str);
        $str = preg_replace('/(ù|ú|?|?|u|u|?|?|?|?|?)/', 'u', $str);
        $str = preg_replace('/(?|ý|?|?|?)/', 'y', $str);
        $str = preg_replace('/(d)/', 'd', $str);
        $str = preg_replace('/(À|Á|?|?|Ã|Â|?|?|?|?|?|A|?|?|?|?|?)/', 'A', $str);
        $str = preg_replace('/(È|É|?|?|?|Ê|?|?|?|?|?)/', 'E', $str);
        $str = preg_replace('/(Ì|Í|?|?|I)/', 'I', $str);
        $str = preg_replace('/(Ò|Ó|?|?|Õ|Ô|?|?|?|?|?|O|?|?|?|?|?)/', 'O', $str);
        $str = preg_replace('/(Ù|Ú|?|?|U|U|?|?|?|?|?)/', 'U', $str);
        $str = preg_replace('/(?|Ý|?|?|?)/', 'Y', $str);
        $str = preg_replace('/(Ð)/', 'D', $str);
        return $str;
    }
    
    1. 更新函数qa_string_remove_accents以使用新创建的函数返回。
    2. 代码:

      function qa_string_remove_accents($string)
      /*
      Return UTF-8 input $string with all accents (on Roman characters) removed
      */
      {
          if (qa_to_override(__FUNCTION__)) { $args=func_get_args(); return qa_call_override(__FUNCTION__, $args); }
      
          //global $qa_utf8removeaccents;
          //return strtr($string, $qa_utf8removeaccents);
      
          return qa_convert_vi_to_en($string);
      }