php - 如何使用 mailto 避免 url:
问题描述
我在 php 中工作,我创建了一个从提交的 url 获取链接的函数。该代码运行良好,但它甚至会选择不活动的链接,例如 mailto:, , javascript:void(0)。我怎样才能避免拿起一个标签,其href类似于: href="mailto:" ; href="电话:"; href="javascript:"?提前谢谢你。
function check_all_links($url) {
$doc = new DOMDocument();
@$doc->loadHTML(file_get_contents($url));
$linklist = $doc->getElementsByTagName("a");
$title = $doc->getElementsByTagName("title");
$href = array();
$page_url = $full_url = $new_url = "";
$full_url = goodUrl($url);
$scheme = parse_url($url, PHP_URL_SCHEME);
$slash = '/';
$links = array();
$linkNo = array();
if ($scheme == "http") {
foreach ($linklist as $link) {
$href = strtolower($link->getAttribute('href'));
$page_url = parse_url($href, PHP_URL_PATH);
$new_url = $scheme."://".$full_url.'/'.ltrim($page_url, '/');
//check if href has mailto: or # or javascipt() or tel:
if (strpos($page_url, "tel:") === True) {
continue;
}
if(!in_array($new_url, $linkNo)) {
echo $new_url."<br>" ;
array_push($linkNo, $new_url);
$links[] = array('Links' => $new_url );
}
}
}else if ($scheme == "https") {
foreach ($linklist as $link) {
$href = strtolower($link->getAttribute('href'));
$page_url = parse_url($href, PHP_URL_PATH);
$new_url = $scheme."://".$full_url.'/'.ltrim($page_url, '/');
if (strpos($page_url, "tel:") === True) {
continue;
}
if(!in_array($new_url, $linkNo)) {
echo $new_url."<br>" ;
array_push($linkNo, $new_url);
$links[] = array('Links' => $new_url );
}
}
}
解决方案
您可以使用函数结果中的scheme
字段。parse_url
代替:
if (strpos($page_url, "tel:") === True) {
continue;
}
您可以使用:
if (isset($page_url["scheme"] && in_array($page_url["scheme"], ["mailto", "tel", "javascript"]) {
continue;
}
推荐阅读
- inno-setup - InnoTools Downloader 失败并显示“抱歉,无法下载文件”
- javascript - 函数语法js前的括号含义
- javascript - 如何在角度环境中使用来自 fullcalendar 的控件(特别是 eventAllow)来限制某些事件的拖放
- multipartform-data - 如何设置 Azure API 管理以接受带有表单数据字段的 POST 并将它们传递给旧 API
- c# - 使用 Async 调用 WebAPI 无法正确返回
- javascript - insertBefore(), before() & Closest - 在我需要的地方插入数据
- spring-boot - 搜索功能,但删除不是来自前端的字段
- content-management-system - 将 Netlify CMS 与现有静态网站集成
- c++ - 不断收到错误消息并非所有控制路径都返回值
- spring-boot - 如何通过 Xml 配置连接(a)JpaRepository 的(子类/子接口)?