PHP 抽取网页题目并剔除不相关的seo关键字
PHP 抽取网页标题并剔除不相关的seo关键字
场景描述:
过往我们在抽取网页标题的时候,都会直接抽取 之间的内容. 但实际情况是这样,例如javaeye 的一篇文章 http://www.iteye.com/news/21643 , 的内容为 "10年软件开发教会我最重要的10件事 - 非技术 - ITeye资讯", 但实际引用中我们期望的标题应该为 "10年软件开发教会我最重要的10件事". 所以标题后面堆砌了很多不相关的关键字(应该是为了 seo 吧). 所以我们希望过滤掉这些关键字. 有下面的方法可以参考:
1. 查找 h1 等标签.(分析sina news 一些网站之后, 觉得不可行,会有很多干扰)
2. 从全文去标题后,将 之间的内容切割(按 _ | -)为 a1,a2,a3,a4,然后从最长的词组a3开始从全文查找. 如果查找成功,那么开始向左边迭代查询 a2,a1,直到查询失败为止 。左侧失败后,再继续向右迭代,同理. (这里我采用的是这种方法)
<?php /** * @author pqcc <[email protected]> * @date: 2011-06-18 * Description: 给定一个网页内容,提取网页的标题. 提取的标题不包括 seo 关键字. * e.g: 一篇新闻标题的从<title>直接抽取结果为 "大学英语四六级本周六开考 909万人参考_新浪教育_新浪网", * 但我们希望的结果是:"大学英语四六级本周六开考 909万人参考". * 适用范围: 文章最终页标题的提取, 不包括专题页等. */class TitlePurify{ private $matches_preg = '[-_\s|—]'; function getTitle($contents){/*{{{*/ $preg = "/<title>]*>([\w|\t|\r|\W]*?)/i"; preg_match($preg, $contents, $matches); if(count($matches)trimTitle($title, $contents); }/*}}}*/ function trimMeta($contents){/*{{{*/ // 首先去除 <title> 内容, <meta> 内容. $preg = "/<title>]*>([\w|\t|\r|\W]*?)/i"; $contents = preg_replace($preg, '', $contents); $preg = "/<meta>]*>/i"; $contents = preg_replace($preg, '', $contents); return $contents; }/*}}}*/ // 获取长度最长的 item?所处的index. function getMaxIndex($titles){/*{{{*/ $maxItemIndex = 0; $maxLength = 0; $loop = 0; foreach($titles as $item){ if(strlen($item)>$maxLength){ $maxLength = strlen($item); $maxItemIndex = $loop; } $loop++; } return $maxItemIndex; }/*}}}*/ function trim($title, $titles, $contents, $maxItemIndex){/*{{{*/ [email protected] : 此处可优化contents // 如果查找成功. result = tempTitle. $tempTitle = $titles[$maxItemIndex]; $result = $tempTitle; $count = count($titles); // while 从当前index 向左进行迭代(直到到达第一个或者匹配失败才中止). $leftIndex = $maxItemIndex-1; while(true && $leftIndex>=0){ // tempTitle+左一个. preg_match("/({$this->matches_preg}+{$tempTitle})/i", $title, $matches); if(count($matches)>1){ // temp 用于匹配失败后,进行回滚. $temp = $titles[$leftIndex] . $matches[1]; $tempTitle = $titles[$leftIndex] . $matches[1]; // 继续拿着 tempTitle 去匹配. preg_match("/$tempTitle/i", $contents, $matches); // 如果查找失败.... if(count($matches)matches_preg}+)/i", $title, $matches); if(count($matches)>1){ // temp 用于匹配失败后,进行回滚. $temp = $matches[1] . $titles[$rightIndex]; $tempTitle = $matches[1] . $titles[$rightIndex]; // 继续拿着 tempTitle 去匹配. preg_match("/$tempTitle/i", $contents, $matches); // 如果查找失败.... if(count($matches)trimMeta($contents); // 配置切割标题的规则. $titles = preg_split("/$this->matches_preg/i", $title); $count = count($titles); //var_dump($titles);exit; // 将当前最长的 item 从全文查找. $maxItemIndex = $this->getMaxIndex($titles); $tempTitle = $titles[$maxItemIndex]; preg_match("/$tempTitle/i", $contents, $matches); // 如果查找失败.... if(count($matches)trim($title, $titles, $contents, $maxItemIndex); }/*}}}*/}// ------------- test code ------------------------------function convertEncoding($contents){ preg_match("/charset=([\w|\-]+);?/i", $contents, $match); $charset = isset($match[1])? $match[1] : 'UTF-8'; $contents = mb_convert_encoding($contents, 'UTF-8', $charset); return $contents;}$url = 'http://china.nba.com/news/4/2011/0617/61383331/10451.html';$contents = file_get_contents($url);$contents = convertEncoding($contents);$startTime = microtime();$purify = new TitlePurify();$title = $purify->getTitle($contents);$endTime = microtime();echo "标题: $title ";echo "cost: " . ($endTime-$startTime);?></title> </title> </title> </title>

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Alipay Php ...

JWT est une norme ouverte basée sur JSON, utilisée pour transmettre en toute sécurité des informations entre les parties, principalement pour l'authentification de l'identité et l'échange d'informations. 1. JWT se compose de trois parties: en-tête, charge utile et signature. 2. Le principe de travail de JWT comprend trois étapes: la génération de JWT, la vérification de la charge utile JWT et l'analyse. 3. Lorsque vous utilisez JWT pour l'authentification en PHP, JWT peut être généré et vérifié, et les informations sur le rôle et l'autorisation des utilisateurs peuvent être incluses dans l'utilisation avancée. 4. Les erreurs courantes incluent une défaillance de vérification de signature, l'expiration des jetons et la charge utile surdimensionnée. Les compétences de débogage incluent l'utilisation des outils de débogage et de l'exploitation forestière. 5. L'optimisation des performances et les meilleures pratiques incluent l'utilisation des algorithmes de signature appropriés, la définition des périodes de validité raisonnablement,

Le détournement de la session peut être réalisé via les étapes suivantes: 1. Obtenez l'ID de session, 2. Utilisez l'ID de session, 3. Gardez la session active. Les méthodes pour empêcher le détournement de la session en PHP incluent: 1. Utilisez la fonction Session_RegeReate_id () pour régénérer l'ID de session, 2. Stocker les données de session via la base de données, 3. Assurez-vous que toutes les données de session sont transmises via HTTPS.

L'application du principe solide dans le développement de PHP comprend: 1. Principe de responsabilité unique (SRP): Chaque classe n'est responsable d'une seule fonction. 2. Principe ouvert et ferme (OCP): les changements sont réalisés par extension plutôt que par modification. 3. Principe de substitution de Lisch (LSP): les sous-classes peuvent remplacer les classes de base sans affecter la précision du programme. 4. Principe d'isolement d'interface (ISP): utilisez des interfaces à grain fin pour éviter les dépendances et les méthodes inutilisées. 5. Principe d'inversion de dépendance (DIP): les modules élevés et de bas niveau reposent sur l'abstraction et sont mis en œuvre par injection de dépendance.

Comment déboguer le mode CLI dans phpstorm? Lors du développement avec PHPStorm, nous devons parfois déboguer PHP en mode interface de ligne de commande (CLI) ...

Comment définir automatiquement les autorisations d'UnixSocket après le redémarrage du système. Chaque fois que le système redémarre, nous devons exécuter la commande suivante pour modifier les autorisations d'UnixSocket: sudo ...

Liaison statique (statique: :) implémente la liaison statique tardive (LSB) dans PHP, permettant à des classes d'appel d'être référencées dans des contextes statiques plutôt que de définir des classes. 1) Le processus d'analyse est effectué au moment de l'exécution, 2) Recherchez la classe d'appel dans la relation de succession, 3) il peut apporter des frais généraux de performance.

Envoyant des données JSON à l'aide de la bibliothèque Curl de PHP dans le développement de PHP, il est souvent nécessaire d'interagir avec les API externes. L'une des façons courantes consiste à utiliser la bibliothèque Curl pour envoyer le post� ...
