![](/img/trans.png)
[英]How to set permalink of your blog post according to date and title of post?
[英]Generate permalink to a blog post Hindi PHP
我有一種形式,其中以下輸入來自用戶:
我將Blog標題轉換為小寫,並用dash(-)替換空白, 並將其存儲在Permalink to access blog
。
下面是處理此操作的代碼:
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='-');
直到Blog headline
為英文,此代碼才能正常工作。 但是,如果用戶輸入Hindi
那么我只會得到-
永久鏈接意味着它無法識別印地語POST值。
發生這種情況是因為印地語使用UTF-8中的擴展字符集,並且您正在轉換為僅提供拉丁字符的ASCII,因此:
$str = "नमस्ते"
$clean = iconv('UTF-8', 'ASCII//TRANSLIT', $str); // clean is an empty string ""
根據rfc3986
- 人物
...
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.