伙計們,我嘗試了很多功能,但沒有一個能像應有的那樣幫助我。
我有 htaccess 將 URL 替換為友好的 URL,例如(test-test-test-test)
在英語中一切正常,但在阿拉伯語中不起作用(?????-?????-?????-?????) 可能不起作用
// English function work fine! replace long title with dashes
// ex: hello-world-how-is-everything
function seoUrl($string) {
$string = strtolower($string);
$string = str_replace('&',' ',$string);
$string = preg_replace("/[^a-z0-9_\s-]/", "", $string);
$string = preg_replace("/[\s-] /", " ", $string);
$string = preg_replace("/[\s_]/", "-", $string);
return $string;
}
所以我希望它用阿拉伯語作業..謝謝
uj5u.com熱心網友回復:
您需要在多個地方修復您的代碼,主要是通過匹配任何 Unicode 字母/數字并將多個連續的連字符或空格替換為一個。此外,您的替代品也需要調整:
function seoUrl($string) {
$string = mb_strtolower($string);
$string = str_replace('&',' ',$string);
$string = preg_replace("/[^\w\s-] /u", " ", $string);
$string = preg_replace("/[\s-] /u", " ", $string);
$string = preg_replace("/[\s_] /u", "-", $string);
return $string;
}
echo seoUrl("Test-- _-__-Test----Test$#%#Test") . PHP_EOL;
echo seoUrl("?????-- _-__?????t--?????st$#%#?????") . PHP_EOL;
// => test-test-test-test
// => ?????-?????t-?????st-?????
請參閱PHP 演示。
筆記:
mb_strtolower($string);- 處理Unicode字串,mb_strtolower首選preg_replace("/[^\w\s-] /u", " ", $string)- 帶有/u標志,\w并\s匹配任何 Unicode 單詞和空白字符,因此您不再洗掉阿拉伯語和其他字母/數字;請注意,您需要用空格替換匹配項,而不是此處的空字串preg_replace("/[\s-] /u", " ", $string)和preg_replace("/[\s_] /u", "-", $string)-u標志被添加,確保整個連續的匹配塊被替換,而不是一個一個的字符。
uj5u.com熱心網友回復:
<?php
function seoUrl($string) {
$string = strtolower($string);
$string = str_replace('&',' ',$string);
$string = preg_replace("/[chr(0600)-chr(0600FF)a-z0-9_\s-]/is", "", $string);
$string = preg_replace("/[\s-] /", " ", $string);
$string = preg_replace("/[\s_]/", "-", $string);
return $string;
}
var_dump(seoUrl("?????-?????-?????-?????"));
我不知道這是否是你想要的
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/369102.html
