PHP 将字符串转换为孟加拉语语言类型的 SEO 友好 URL

Posted

技术标签:

【中文标题】PHP 将字符串转换为孟加拉语语言类型的 SEO 友好 URL【英文标题】:PHP Convert String to SEO Friendly Url For Bengali Language Type 【发布时间】:2022-01-14 22:20:35 【问题描述】:

我正在尝试将字符串转换为 seo 友好的 url。为此,我编写了下面的代码并将表列排序规则类型设置为 utf8_general_ci 它适用于英语,但不适用于孟加拉语。只为孟加拉语字符串输出单个连字符(-)

 function seo_url( $string, $separator = '-' )
 
   $accents_regex = '~&([a-z]1,2)(?:acute|cedil|circ|grave|lig|orn|ring|slash|th|tilde|uml);~i';
   $special_cases = array( '&' => 'and', "'" => '');
   $string = mb_strtolower( trim( $string ), 'UTF-8' );
   $string = str_replace( array_keys($special_cases), array_values( $special_cases), $string );
   $string = preg_replace( $accents_regex, '$1', htmlentities( $string, ENT_QUOTES, 'UTF-8' ) );
   $string = preg_replace("/[^a-z0-9]/u", "$separator", $string);
   $string = preg_replace("/[$separator]+/u", "$separator", $string);
   return $string;
 

有没有像孟加拉语一样的 unicode 解决方案

【问题讨论】:

你能给我们一个你想要转换的原始字符串的例子吗? 例如这个字符串“নিরাপদ সড়কের সব উদ্যোগ আটকে যাকে যাচ্ছে”如果您尝试使用该函数将这个字符串转换为单个 hypen(-) 函数,它只会将该字符串转换为单个 seo。 好的,谢谢,您期望的结果是什么?我不知道孟加拉语,但在使用俄语 url 时遇到了同样的问题,你想要一些“语音”等效的 url 吗?目前孟加拉语网址的最佳做法是什么? 喜欢这个 নিরাপদ-সড়কের-সব-উদ্যোগ-আটকে-যাচ্ছে>两个词之间的间隙中的连字符 这是你真正可以使用a third-party library的情况。 【参考方案1】:

要接受孟加拉语(或任何其他语言)的字形,您必须更改此行的正则表达式:

 $string = preg_replace("/[^a-z0-9]/u", "$separator", $string);

目前,它的意思是“用 - 更改任何不是字母或数字的字符”。通过另一个正则表达式询问“更改任何不是字母或数字的字符任何语言”:

$string = preg_replace("/[^\pL\pM]/u", "$separator", $string);

更改此行,您的功能将正常工作! 更多信息和相关anwser在这里:https://***.com/a/6005511/15282066

【讨论】:

以上是关于PHP 将字符串转换为孟加拉语语言类型的 SEO 友好 URL的主要内容,如果未能解决你的问题,请参考以下文章

PHP 将短语转换为SEO友好版本

php数组key会将数字类型默认转换为int

php数据类型转换

如何将phpinfo字符串类型转换

php字符串处理

PHP和JavaScript将字符串转换为数字string2int