Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP中带有外来字符的SEO友好URL_Php_Url_Encoding_Utf 8_Seo - Fatal编程技术网

PHP中带有外来字符的SEO友好URL

PHP中带有外来字符的SEO友好URL,php,url,encoding,utf-8,seo,Php,Url,Encoding,Utf 8,Seo,出于SEO目的,我将一些用户提供的内容放在我的URL中,并使用以下代码进行清理: /** * Create URL friendly strings or filenames * @param type $str * @param type $replace * @param type $delimiter * @return type */ public static function toAscii($str, $replace=array(), $delimiter='-') { if

出于SEO目的,我将一些用户提供的内容放在我的URL中,并使用以下代码进行清理:

/**
* Create URL friendly strings or filenames
* @param type $str
* @param type $replace
* @param type $delimiter
* @return type
*/
public static function toAscii($str, $replace=array(), $delimiter='-') {
  if(!empty($replace)) {
    $str = str_replace((array)$replace, ' ', $str);
  }
  $clean = iconv('UTF-8', 'ASCII//TRANSLIT', $str);
  $clean = preg_replace("/[^a-zA-Z0-9\/_|+ -]/", '', $clean);
  $clean = strtolower(trim($clean, '-'));
  $clean = preg_replace("/[\/_|+ -]+/", $delimiter, $clean);
  return $clean;
}
然而,我发现这是不够的。一篇有一些希伯来文字符的文章给了我:

iconv():在输入字符串中检测到非法字符

有没有一个银弹函数可以安全地将字符串生成漂亮的URL?至少我不希望它坠毁。然后,如果URL看起来仍然很好,SEO友好,那就太好了


今天是希伯来语,但明天可能是俄语、汉语、克林贡语……

我只使用百分比编码。你的主要目标永远不应该是搜索引擎,而是用户。当用户复制粘贴这些URL时,他们将看到解码的字符(至少在大多数情况下)。搜索引擎一般也可以“理解”什么百分比编码字符串。有趣的想法。即使要避免使用引号之类的经典字符?是的,在我看来百分比编码是最好的选择。那么urlencode就足够安全了?我会选择rawurlencode,主要是因为Jonathan这么说:。