修剪斜线和时期的网址

时间:2016-11-10 16:50:58

标签: php wordpress url

我正在尝试验证网址,当我通过表单发送时,我想确保它以https或http开头,至少有一个句点,然后没有句号或尾随最后削减。我已经通过使用正则表达式获得了http和句点位,但是我似乎无法解决如何修剪网址的问题。 ,。/,/。或/我使用rtrim,但只有在找到单个字符时才有效,如果出现,有没有办法删除它们?

这是我的代码:

//update the canonical url
        $canonical_url = $_POST ['canonical_url'];
        $valid_url =  preg_match('/^(http[s]?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/', $canonical_url );
        if ($valid_url) {
            $removed_period = rtrim($canonical_url, '.');
            $final_canonical = rtrim($removed_period, '/');
        }

1 个答案:

答案 0 :(得分:1)

您可以使用filter_var来验证您的网址,并使用preg_replace修改结尾..//./,如果任何

$canonical_url = $_POST['canonical_url'];
if (filter_var($canonical_url, FILTER_VALIDATE_URL, FILTER_FLAG_SCHEME_REQUIRED)) {
    $final_canonical = preg_replace('/(\.|\.\/|\/\.|\/)$/', '', $canonical_url);
}
  

请注意,FILTER_VALIDATE_URL允许任何符合RFC 2396的URI,因此如果您只接受http / https,则可以添加:

if(filter_var(…) && strpos($canonical_url, 'http') !== false) {…}