我正在尝试验证网址,当我通过表单发送时,我想确保它以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, '/');
}
答案 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) {…}