为了账号安全,请及时绑定邮箱和手机立即绑定

从输入 url 过滤域

从输入 url 过滤域

PHP
忽然笑 2021-12-03 16:16:01
我需要在保存到数据库表之前检查输入值。我有一个域,我想检查 url 字段中插入的链接。如果 url 使用列表验证中的域之一,则为 true 否则为 false。前任。$urls = array('domain.com','domain2.com','domain3.com');在 url 字段中将放置链接 ex (domain2.com/priflie/1234 OR domain.com/profile/4321)我试过这个,但没有用if (in_array($url, $urls)) {// error code here }
查看完整描述

1 回答

?
偶然的你

TA贡献1841条经验 获得超3个赞

您需要从 URL 解析域。请参阅此答案以获取解释 - Parsing Domain From URL In PHP


<?php

$url = 'http://example.com/index.html';

$parse = parse_url($url);

$domain = $parse['host'];


$domains = array('example.com','example2.com','example3.com');


if (in_array($domain, $domains)) {

    ...

}

编辑- 不是 100% 确定这里的要求,但听起来你想要一个返回布尔值的函数。


只需要检查 url 是否属于列表中的域。如果是,则写入数据库,否则返回错误


/**

 * Returns a boolean indicating if the given URL is in a list of valid domains.

 * @param string $url

 * @return bool

 */

function validDomain($url)

{

    $parse = parse_url($url);

    $domain = $parse['host'];


    $validDomains = array('example.com', 'example2.com', 'example3.com');


    return in_array($domain, $validDomains);

}


if (validDomain('http://example.com/index.html')) {

    // Insert into DB.

} else {

    // Handle your error.

}


查看完整回答
反对 回复 2021-12-03
  • 1 回答
  • 0 关注
  • 178 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信