如果有任何符号,为什么 slug 函数会在标题末尾留下一个 - ?
Why slug function leaves a - at the end of title if there is any symbol?
大家好,
我的 slug 功能正常,但我遇到了问题。
假设我为文章写了一些标题,例如为什么狐狸很狡猾?
现在因为我添加了 ?标题的结尾我得到一个 - 例如the-fox-is-very-cunning-why-
这是我的函数
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, '', 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
个字符。
大家好,
我的 slug 功能正常,但我遇到了问题。
假设我为文章写了一些标题,例如为什么狐狸很狡猾?
现在因为我添加了 ?标题的结尾我得到一个 - 例如the-fox-is-very-cunning-why-
这是我的函数
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, '', 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
个字符。