生成permalink到印地语PHP的博客帖子
我有一个表格,其中以下输入来自用户:生成permalink到印地语PHP的博客帖子,php,permalinks,Php,Permalinks,我有一个表格,其中以下输入来自用户: 博客标题 博客描述 永久链接以访问博客 我正在将博客标题转换为小写,并用破折号(-)替换空格,将其存储在Permalink中以访问博客下面是处理此操作的代码: setlocale(LC_ALL, 'en_US.UTF8'); function toAscii($str, $replace=array(), $delimiter='-') { if( !empty($replace) ) { $str = str_replace((arra
- 博客标题
- 博客描述
- 永久链接以访问博客
Permalink中以访问博客
下面是处理此操作的代码:
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;
}
$prmlkn = toAscii($blog_headline, $replace=array(), $delimiter='-');
此代码在博客标题
为英文之前都可以正常工作。但是如果用户输入印地语
,那么我只会得到-
,因为permalink意味着它无法识别印地语POST值。这是因为印地语使用UTF-8中的扩展字符集,而您正在转换为仅提供拉丁字符的ASCII,因此:
$str = "नमस्ते"
$clean = iconv('UTF-8', 'ASCII//TRANSLIT', $str); // clean is an empty string ""
据
人物
ABNF符号将其终端值定义为非负
基于US-ASCII编码字符集的整数(代码点)
[ASCII]。因为URI是一个字符序列,所以必须反转
为了理解URI语法,需要使用该关系。因此,
ABNF使用的整数值必须映射回它们的
通过US-ASCII输入相应字符,以完成语法
规则
URI由一组有限的字符组成,这些字符包括
数字、字母和一些图形符号。
这些字符可用于在
而剩余的URI字符,包括未保留集和
而那些不作为分隔符的保留字符定义了每个
组件的标识数据
您最好使用urlencode()
,但请注意,这可能会造成非常难看的长永久链接
$str = "नमस्ते hello";
$clean = urlencode("$str");
printf("%s",$clean);
将导致有效但不公开的:
%E0%A4%A8%E0%A4%AE%E0%A4%B8%E0%A5%8D%E0%A4%A4%E0%A5%87+hello
如果您提供一个示例输入就好了,但简单的答案似乎是印地语,例如नमस्ते代码>不是url的有效文本。假设有人将博客标题添加为दर्शक इस लिंक पर वीडियो देख सकते हैं代码>然后我希望permalink成为दर्शक-इस-लिंक-पर-वीडियो-देख-सकते-हैं代码>基于(RFC 3986)[URL可能只包含ASCII-US小节中的字符。但是,它们可以使用下面我的答案中演示的百分比编码进行编码。