mg冰球突破客户端 - mg冰球突破手机版下载(集团)有限公司

mg冰球突破客户端 - mg冰球突破手机版下载(集团)有限公司

beat365É‹Ãœºç‰ˆå®¢Ãˆ·ç-best365网址【mg冰球突破手机版下载】官方网站

beat365É‹Ãœºç‰ˆå®¢Ãˆ·ç来源:网络2024-03-23 15:42:56

我正在尝试创建一个多字节安全标题=>URL字符串转换器,但是我遇到了一个问题,即在删除其他字符时不知道如何在URL中允许合法的亚洲(和其他)字符。这是目前设置的功能。

public static function convertAccentedCharacters($string)

{

$table = array(

'Å'=>'CE', 'Å'=>'ce', 'Â¥'=>'Y', 'Ÿ'=>'Y', 'µ'=>'u', 'ü'=>'u',

'Å '=>'S', 'Å¡'=>'s', 'Ä'=>'Dj', 'Ä'=>'dj', 'Ž'=>'Z', 'ž'=>'z', 'Ä'=>'C', 'Ä'=>'c', 'Ä'=>'C', 'Ä'=>'c',

'Ã'=>'A', 'Ã'=>'A', 'Ã'=>'A', 'Ã'=>'A', 'Ã'=>'A', 'Ã'=>'A', 'Ã'=>'A', 'Ã'=>'C', 'Ã'=>'E', 'Ã'=>'E',

'Ã'=>'E', 'Ã'=>'E', 'Ã'=>'I', 'Ã'=>'I', 'Ã'=>'I', 'Ã'=>'I', 'Ã'=>'N', 'Ã'=>'O', 'Ã'=>'O', 'Ã'=>'O',

'Ã'=>'O', 'Ã'=>'O', 'Ã'=>'O', 'Ã'=>'U', 'Ã'=>'U', 'Ã'=>'U', 'Ã'=>'U', 'Ã'=>'Y', 'Ã'=>'B', 'Ã'=>'Ss',

'à'=>'a', 'á'=>'a', 'â'=>'a', 'ã'=>'a', 'ä'=>'a', 'å'=>'a', 'æ'=>'a', 'ç'=>'c', 'è'=>'e', 'é'=>'e',

'ê'=>'e', 'ë'=>'e', 'ì'=>'i', 'í'=>'i', 'î'=>'i', 'ï'=>'i', 'ð'=>'o', 'ñ'=>'n', 'ò'=>'o', 'ó'=>'o',

'ô'=>'o', 'õ'=>'o', 'ö'=>'o', 'ø'=>'o', 'ù'=>'u', 'ú'=>'u', 'û'=>'u', 'ý'=>'y', 'ý'=>'y', 'þ'=>'b',

'ÿ'=>'y', 'Å'=>'R', 'Å'=>'r',

);

return str_replace(array_keys($table), array_values($table), $string);

}

public static function convertStringToSafeCharacters($string)

{

$string = self::convertAccentedCharacters($string);

if (function_exists('mb_convert_encoding') === true)

{

$string = mb_convert_encoding($string, 'UTF-8', 'auto');

}

else if(function_exists('iconv') === true && ($iconvstr = @iconv('', 'UTF-8', $string)) !== false)

{

$string = $iconvstr;

}

else

{

$string = utf8_decode($string);

}

return strip_tags(trim($string));

}

public static function convertToUrlsafe($string, $options=array())

{

if(isset($options['separator']) === false || $options['separator'] === false)

{

global $_SITE;

if(strpos($_SITE->urlsafe_format, 'underscore') !== false)

{

$options['separator'] = '_';

}

else

{

$options['separator'] = '-';

}

}

if(isset($options['case']) === false || $options['case'] === false)

{

global $_SITE;

$format = substr($_SITE->urlsafe_format, 0, 5);

if($format === 'lower')

{

$options['case'] = 'lower';

}

else if($format === 'upper')

{

$options['case'] = 'upper';

}

else

{

$options['case'] = 'mixed';

}

}

$string = self::convertStringToSafeCharacters($string);

$separator_in_use = $options['separator'];

$separtor_convert = $options['separator'] == '-' ? '_' : '-';

$preg_changes = array(

// convert other seperators into the seperator being used

'/\\'.$separtor_convert.'/i' => $separator_in_use,

// remove any none legal chars

'/[^\-\_a-zA-Z0-9&\s]/i' => '',

'/\&\#\d+?\;/' => '',

'/\&\S+?\;/' => '',

// replace spaces with separator

'/\s+/' => $separator_in_use,

// replace amersands with and

'/\&/' => 'and',

// now finally remove any last chars

'/[^A-Za-z0-9\/'.$separator_in_use.']/' => '',

// remove any double paddinging separators, ie ----

'/'.$separator_in_use.'+/' => $separator_in_use,

// remove separator padding from start and end of string

'/'.$separator_in_use.'$/' => '',

'/^'.$separator_in_use.'/' => ''

);

$string = preg_replace(array_keys($preg_changes), array_values($preg_changes), $string);

switch($options['case'])

{

case 'lower' :

$string = strtolower($string);

break;

case 'upper' :

$string = strtoupper($string);

break;

case 'mixed' :

// do nothing

}

return $string;

}

请记住,其中有一些与CMS相关的功能,这些功能实际上是类的一部分。主函数调用将是

convertToUrlsafe($string);

我很确定问题出在函数本身的regex替换上,但是我不确定在不破坏现有功能的情况下要做什么改变。

我希望能够采取以下标题,并让他们返回URLSAFE标题。

“第一个博客!”=>“第一个博客”

“?§”(不知道这是怎么说的),但它需要转换为urlsafe,此时它只返回一个空字符串。