从Urdu URL生成SEO友好的URL Slug

时间:2012-08-31 17:50:41

标签: php seo

您好我有一个网站,其中所有网址都是seo现在我将我的网站转移到乌尔都语语言,但因为网址是urdu它不显示正确的网址是否有人有seo功能,我可以使用

我的网站网址现在就像这个domain.com/123//它应该像这样domain.com/123 /عوأنالاأعرفمنأينأستطيعأنأراك/

这是我目前的代码。

function seoUrl($input)
    {
    /** 
    * Return URL-Friendly string slug
    * @param string $input 
    * @return string 
    */
        $input = remove_accent( $input );
        $input = str_replace(" ", " ", $input);
        $input = str_replace(array("'", "-"), "", $input); //remove single quote and dash
        $input = mb_convert_case($input, MB_CASE_LOWER, "UTF-8"); //convert to lowercase
        $input = preg_replace("#[^a-zA-Z]+#", "-", $input); //replace everything non an with dashes
        $input = preg_replace("#(-){2,}#", "$1", $input); //replace multiple dashes with one
        $input = trim($input, "-"); //trim dashes from beginning and end of string if any
        return $input;
    }

    function remove_accent( $str )
    {
        $a = array('À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Æ', 'Ç', 'È', 'É', 'Ê', 'Ë', 'Ì', 'Í', 'Î', 'Ï', 'Ð', 'Ñ', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', 
                    'Ø', 'Ù', 'Ú', 'Û', 'Ü', 'Ý', 'ß', 'à', 'á', 'â', 'ã', 'ä', 'å', 'æ', 'ç', 'è', 'é', 'ê', 'ë', 'ì', 'í', 'î', 'ï', 
                    'ñ', 'ò', 'ó', 'ô', 'õ', 'ö', 'ø', 'ù', 'ú', 'û', 'ü', 'ý', 'ÿ', 'A', 'a', 'A', 'a', 'A', 'a', 'C', 'c', 'C', 'c', 
                    'C', 'c', 'C', 'c', 'D', 'd', 'Ð', 'd', 'E', 'e', 'E', 'e', 'E', 'e', 'E', 'e', 'E', 'e', 'G', 'g', 'G', 'g', 'G', 
                    'g', 'G', 'g', 'H', 'h', 'H', 'h', 'I', 'i', 'I', 'i', 'I', 'i', 'I', 'i', 'I', 'i', '?', '?', 'J', 'j', 'K', 'k', 
                    'L', 'l', 'L', 'l', 'L', 'l', '?', '?', 'L', 'l', 'N', 'n', 'N', 'n', 'N', 'n', '?', 'O', 'o', 'O', 'o', 'O', 'o', 
                    'Œ', 'œ', 'R', 'r', 'R', 'r', 'R', 'r', 'S', 's', 'S', 's', 'S', 's', 'Š', 'š', 'T', 't', 'T', 't', 'T', 't', 'U', 
                    'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'W', 'w', 'Y', 'y', 'Ÿ', 'Z', 'z', 'Z', 'z', 'Ž', 'ž', '?', 
                    'ƒ', 'O', 'o', 'U', 'u', 'A', 'a', 'I', 'i', 'O', 'o', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', '?', '?', 
                    '?', '?', '?', '?');

        $b = array('A', 'A', 'A', 'A', 'A', 'A', 'AE', 'C', 'E', 'E', 'E', 'E', 'I', 'I', 'I', 'I', 'D', 'N', 'O', 'O', 'O', 'O', 'O', 
                   'O', 'U', 'U', 'U', 'U', 'Y', 's', 'a', 'a', 'a', 'a', 'a', 'a', 'ae', 'c', 'e', 'e', 'e', 'e', 'i', 'i', 'i', 'i', 'n', 
                   'o', 'o', 'o', 'o', 'o', 'o', 'u', 'u', 'u', 'u', 'y', 'y', 'A', 'a', 'A', 'a', 'A', 'a', 'C', 'c', 'C', 'c', 'C', 'c', 
                   'C', 'c', 'D', 'd', 'D', 'd', 'E', 'e', 'E', 'e', 'E', 'e', 'E', 'e', 'E', 'e', 'G', 'g', 'G', 'g', 'G', 'g', 'G', 'g', 
                   'H', 'h', 'H', 'h', 'I', 'i', 'I', 'i', 'I', 'i', 'I', 'i', 'I', 'i', 'IJ', 'ij', 'J', 'j', 'K', 'k', 'L', 'l', 'L', 'l', 
                   'L', 'l', 'L', 'l', 'l', 'l', 'N', 'n', 'N', 'n', 'N', 'n', 'n', 'O', 'o', 'O', 'o', 'O', 'o', 'OE', 'oe', 'R', 'r', 'R', 
                   'r', 'R', 'r', 'S', 's', 'S', 's', 'S', 's', 'S', 's', 'T', 't', 'T', 't', 'T', 't', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 
                   'u', 'U', 'u', 'U', 'u', 'W', 'w', 'Y', 'y', 'Y', 'Z', 'z', 'Z', 'z', 'Z', 'z', 's', 'f', 'O', 'o', 'U', 'u', 'A', 'a', 
                   'I', 'i', 'O', 'o', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'A', 'a', 'AE', 'ae', 'O', 'o');

        return str_replace($a, $b, $str);
    }

1 个答案:

答案 0 :(得分:-1)

问题是@deceze指出的。网址只能包含拉丁字母中的字符(实际上,在英文字母表中),因此您在网址中使用乌尔都语的唯一方法是使用英文字母进行最佳处理。

例如,我说加泰罗尼亚语,而且,有口音的一部分,我们收到了这封信:ç。它几乎是 c ,但它听起来像是 s ,所以当用ç敲打文本时(例如,Març),我会选择Marc(角色)相似性)或火星(语音相似性)。你可以遵循这种模式。否则,我认为你无能为力。

修改 在url编码快速课程之后,你们都应该阅读这个答案下面的评论。

我转向完全阅读你的功能,我想我偶然会理解“在幕后”发生了什么:

你得到你的乌尔都语字符串,比如你之前提到的字符串:ع وأنا لا أعرف من أين أستطيع أن أراك

  1. 您将其传递给remove_accent()。它不包含任何没有重音的其他乌尔都语字符,因此返回相同的字符串:ع وأنا لا أعرف من أين أستطيع أن أراك
  2. 通过更换它们,确保没有奇怪的符号。在这种情况下,字符串将保持原样ع وأنا لا أعرف من أين أستطيع أن أراك
  3. 您将所有字符转换为小写。我不知道乌尔都语,所以我不确定这里是否会发生任何事情,所以我会保留原样:ع وأنا لا أعرف من أين أستطيع أن أراك问题出现
  4. 您将任何不同于拉丁字母的字母替换为短划线。在这种情况下,它看起来像这样:------------------------------------
  5. 您可以使用一个短划线替换任意两个或更多短划线的组:-
  6. 最后,你修剪那个短划线。 (empty)
  7. 所以,你遇到的主要问题是第一个正则表达式函数。我不知道如何解决这个问题。可能有一个技巧将所有这些字符转换为ASCII,然后创建一个试图解决它的正则表达式。但是,我会采取以下步骤:

    1. 清除_., !'?&等符号中的字符串,并将其转换为-
    2. 删除重复的项目。
    3. 小写字符串
    4. 将字符串转换为浏览器可读的内容(utf8_decode()可能就足够了,但我还没有尝试过)