如果代码中有符号,为什么子函数在标题末尾留下一个-?]

问题描述 投票:0回答:1
大家好,

我的子弹功能正在运行,但是我遇到了问题。

例如,如果我写文章标题,例如狐狸很狡猾,为什么?

现在是因为我添加了?标题结尾我得到-例如狐狸非常狡猾->

这是我的职能

function slug( $string, $separator = '-' ) { $accents_regex = '~&([a-z]{1,2})(?:acute|cedil|circ|grave|lig|orn|ring|slash|th|tilde|uml);~i'; $special_cases = array( '&' => 'and', '@' => 'at', '%' => 'percent', "'" => ''); $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; }

有人可以帮忙解决吗?

谢谢

嗨,大家好,我的子弹功能正在运行,但是我遇到了问题。说如果我写文章的标题例如狐狸为什么很狡猾?现在因为我添加了?标题结尾我得到-例如-]] >>

$string = preg_replace("/[^a-z0-9]/u", "$separator", $string);
在此行中,您将所有非字母数字字符替换为分隔符,并且?不是字母数字字符,因此将其替换,并且您以后将不对其进行任何操作。

您可以在函数的末尾添加$string = trim($string, $separator);以删除字符串末尾的$separator字符。

php slug
1个回答
0
投票
$string = preg_replace("/[^a-z0-9]/u", "$separator", $string);
在此行中,您将所有非字母数字字符替换为分隔符,并且?不是字母数字字符,因此将其替换,并且您以后将不对其进行任何操作。
© www.soinside.com 2019 - 2024. All rights reserved.