gpt4 book ai didi

php - 将字符串转换为网络安全 URI

转载 作者:IT王子 更新时间:2023-10-28 23:49:01 27 4
gpt4 key购买 nike

我想要转换带有特殊字符的字符串。通常我会手动找到所有特殊字符及其“网络安全”对应部分并将它们放入数组中。然后我使用 preg_replace 替换每个字符。

但我不禁想到有一个更简单的解决方案,因为它是错误修剪方法。

这是我想要的一个例子:

Hans Günther -> hans-gunther
Jären höst -> jaeren-hoest
René Ågesen -> rene-aagesen

最佳答案

字符串 urlencode (字符串 $str)

http://php.net/manual/en/function.urlencode.php

实际上,这是一篇很棒的文章,关于将上面示例中的文本转换为漂亮的 url 安全字符串(可能比上面的函数更适合你):

http://cubiq.org/the-perfect-php-clean-url-generator

setlocale(LC_ALL, 'en_US.UTF8');
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;
}

以下是它的作用示例:

echo toAscii("Mess'd up --text-- just (to) stress /test/ ?our! `little` \\clean\\ url fun.ction!?-->");
returns: messd-up-text-just-to-stress-test-our-little-clean-url-function

echo toAscii("Perché l'erba è verde?", "'"); // Italian
returns: perche-l-erba-e-verde

echo toAscii("Peux-tu m'aider s'il te plaît?", "'"); // French
returns: peux-tu-m-aider-s-il-te-plait

echo toAscii("Tänk efter nu – förr'n vi föser dig bort"); // Swedish
returns: tank-efter-nu-forrn-vi-foser-dig-bort

echo toAscii("ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöùúûüýÿ");
returns: aaaaaaaeceeeeiiiidnooooouuuuyssaaaaaaaeceeeeiiiidnooooouuuuyy

echo toAscii("Custom`delimiter*example", array('*', '`'));
returns: custom-delimiter-example

echo toAscii("My+Last_Crazy|delimiter/example", '', ' ');
returns: my last crazy delimiter example

如果您想将 ä 转换为 ae 等,您可以使用这样的脚本(抱歉,不知道有什么更好的方法):

setlocale(LC_ALL, 'de_DE');
$replace = array(
'illegal' => array('/Ä/', '/Ö/', '/Ü/', '/ä/', '/ö/', '/ü/', '/Â/', '/é/'),
'legal' => array('Ae', 'Oe', 'Ue', 'ae', 'oe', 'ue', 'Aa', 'e')
);
$string = 'ich hätte gerne brötechen Mein Name ist Öles Âlex';
echo preg_replace($replace['illegal'], $replace['legal'], $string);

//Output: "ich haette gerne broetechen Mein Name ist Oeles Aalex"

您显然可以像这样将它们放在一起(仅转换 ü->ue 等,只需在第一个 preg_replace 中添加更多内容):

setlocale(LC_ALL, 'en_US.UTF8');
function toAscii($str, $replace=array(), $delimiter='-') {
if( !empty($replace) ) {
$str = str_replace((array)$replace, ' ', $str);
}

$clean = preg_replace(array('/Ä/', '/Ö/', '/Ü/', '/ä/', '/ö/', '/ü/'), array('Ae', 'Oe', 'Ue', 'ae', 'oe', 'ue'), $str);
$clean = iconv('UTF-8', 'ASCII//TRANSLIT', $clean);
$clean = preg_replace("/[^a-zA-Z0-9\/_|+ -]/", '', $clean);
$clean = strtolower(trim($clean, '-'));
$clean = preg_replace("/[\/_|+ -]+/", $delimiter, $clean);

return $clean;
}

$text = "Hätten Sie gerne viele Brötchen? Wenn ja dann einfach *!@#$%^&*()eingeben...";
echo toAscii($text);
//OUTPUT: haetten-sie-gerne-viele-broetchen-wenn-ja-dann-einfach-eingeben

关于php - 将字符串转换为网络安全 URI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4783802/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com