PHP-php在抓取网页内容的时候如何过滤标题中的关键字

发布于 2017-01-31 04:32:18 字数 154 浏览 1186 评论 6

是这样的,php通过file_get_contents获取网页内容后,要获取网页中的标题title的内容,但是有时候网页标题是带有关键字的,比如:title为[仙境幻想]制胜一击新服活动-昆仑在线,我想把-昆仑在线过滤掉,当然了像这样的关键字可能有好几个。如何实现把所以的关键字去掉呢,谢谢啦!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

清晨说ぺ晚安 2017-09-29 22:03:59

代码我就不写了,给两条思路:

1、建立过滤词汇表,将表中有的词过滤掉

2、对比多个页面获取到的title,把多个页面都有的词汇,如你举例的“_昆仑在线”这个词找出来,然后再把所有title过滤一遍

可以将两个方法结合起来使用

夜无邪 2017-09-24 12:31:42

这个问题很简单吧?用正则替换就能做到了。。

$title = '[仙境幻想]制胜这是标题后边为关键词-昆仑在线-一击新服活动-昆仑在线_关键词1-关键词2';

echo preg_replace("/([-_][^-_]+)/is",'',$title);

如果出现 -- 或者 __ 也要过滤的话,那么正则写成 /([-_]+[^-_]+)/is 就可以了。

想挽留 2017-08-29 22:30:04

<?php
$html = "<html><head><title>[仙境幻想]制胜一击新服活动-昆仑在线[仙境幻想]制胜一击新服活动_昆仑在线[仙境幻想]制胜一击新服活动-昆仑在线</title></head><body>test</body></html>";
var_dump($html);
preg_match('/<title>(.*)</title>/', $html, $title);
$title[1] = str_replace(array('-昆仑在线', '_昆仑在线'), '', $title[1]);
$html = str_replace($title[0], "<title>$title[1]</title>", $html);
var_dump($html);
?>

泛泛之交 2017-07-09 12:25:58

把title内容进行分割,显示第一个元素:

preg_match('/<title>(.*)</title>/', $html, $title);

$titles = preg_split("/[-_s|—]/i", $title);

$titlestr = $title[0];

瑾兮 2017-06-26 01:33:39

//获取标题内容

$preg = "/<title[^>]>([w|t|r|W]?)</title>/i";
preg_match($preg, $contents, $matches);
$title = $matches[1];

//对标题分隔
$titles = preg_split("/[-_s|—]/i", $title);

//把字符长度最长的当做标题
$maxIndex = 0;
$maxLength = 0;
$loop = 0;
foreach($titles as $item){
if(strlen($item)>$maxLength){
$maxLength = strlen($item);
$maxIndex = $loop;
}

$loop++;
}

echo $titles[$maxIndex];

首先匹配出<title></title>里的内容,然后通过‘-’或‘_’进行分割,分割出来的内容,我是根据字符串最长的最为真正的标题内容的。

灵芸 2017-02-03 07:33:15

看人是抓什么网页,一般的文章网页的话,真正的标题在HTML代码中出现的不只是TITLE标签里,很可能其他标签里有标题,且没有其他字符的,提取即可。如果没有这样的,那只能通过TITLE标签来分析,一般都有一个固定的格式,把标题以外的过滤掉即可!!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文