清理URL标题

问题描述 投票:1回答:2

大家,早安。我的博客标题为“最后的JEDI会摇滚你(评论)”

我有一个PHP功能

function get_url_text( $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;
}

通过该功能运行标题后。

get_url_text("THE LAST JEDI Will Rock You (Review)");

我得到如下结果:

在-最后的绝地,将岩 - 你 - 审查 -

所以它看起来像函数将最后一个字符')'变成' - '

我想要我的结果

在-最后的绝地,将摇滚,你审查

最后没有' - '。我需要在函数中做出哪些更改才能实现此目的?

php regex
2个回答
2
投票

要么return trim($string,'-');或做rtrim($str,'-');

参考:-

trim()

rtrim()


1
投票

好像你可以大大简化你的方法

<?php
$title  = "THE LAST JEDI Will Rock You (Review)";
$url     = rtrim(strtolower(preg_replace('~\W+~', '-', $title)), '-');
echo $url;
# the-last-jedi-will-rock-you-review
?>

注意\W+在这里寻找非单词字符并用-替换它们。

© www.soinside.com 2019 - 2024. All rights reserved.