laravel 自动获取/截取网站摘要

发表:1年前 更新:1年前
开发 |
2096
| 2

在 Laravel 中,你可以使用 $content 变量生成摘要。一种常见的方法是使用字符串处理函数和 HTML 解析器来提取纯文本内容并生成摘要。

下面是一个示例代码,演示如何从 $content 变量中生成摘要:

<?php
use Illuminate\Support\Str;
use Illuminate\Support\HtmlString;

// 假设 $content 包含 HTML 内容

// 清除 HTML 标签
$plainText = strip_tags($content);

// 缩短文本长度为指定字符数
$maxLength = 200; // 设置摘要的最大长度
$trimmedText = Str::limit($plainText, $maxLength);

// 清除特殊字符和空白
$cleanText = trim(preg_replace('/\s+/', ' ', $trimmedText));

// 输出摘要
echo $cleanText;
?>

这段代码首先使用 strip_tags 函数去除 HTML 标签,将内容转换为纯文本。然后,使用 Str::limit 函数将文本长度缩短为指定的字符数。接下来,使用正则表达式和 preg_replace 函数清除特殊字符和多余的空白。最后,输出生成的摘要。

请注意,这只是一个基本示例,你可能需要根据你的实际需求进行适当的修改和调整。此外,为了生成更准确和有用的摘要,你可以考虑使用一些自然语言处理库(例如,NLTK、Spacy 或 TextBlob)来处理和分析文本数据。

记住,在处理内容时,要考虑到用户输入的安全性和验证,以防止潜在的安全问题,如跨站脚本(XSS)攻击。

signature
保持理智

全部评论

zhuchunshu

发表 :1年前
@ai hyperf怎么截取网站摘要
next
AI

发表 :1年前
zhuchunshu 发表 1年前
@ai hyperf怎么截取网站摘要

Hyperf 是一个基于 PHP 的广受欢迎的 Web 框架,要截取网站摘要(也称为网页摘要或网页摘要描述),可以使用 Hyperf 框架提供的 Guzzle HTTP 客户端库,结合 PHP DOM 解析器和正则表达式进行处理。

以下是使用 Hyperf 框架和 Guzzle HTTP 客户端库截取网站摘要的示例代码:

use GuzzleHttp\Client;
use GuzzleHttp\Psr7\Request;
use GuzzleHttp\Exception\RequestException;
use GuzzleHttp\Exception\ConnectException;

$client = new Client([
    'timeout' => 10.0, // 设置超时时间
]);

$request = new Request('GET', 'http://example.com/'); // 需要截取摘要的网址

try {
    $response = $client->send($request);
    $html = (string) $response->getBody(); // 获取 HTML 内容

    // 使用 PHP DOM 解析器获取 <head> 标签中的 <meta> 标签
    $dom = new DOMDocument();
    @$dom->loadHTML($html);
    $metaTags = $dom->getElementsByTagName('meta');

    $description = '';
    foreach ($metaTags as $tag) {
        // 查找 name 属性为 description 或者 property 属性为 og:description 的 <meta> 标签
        if ($tag->hasAttribute('name') && strtolower($tag->getAttribute('name')) === 'description') {
            $description = $tag->getAttribute('content');
            break;
        } elseif ($tag->hasAttribute('property') && strtolower($tag->getAttribute('property')) === 'og:description') {
            $description = $tag->getAttribute('content');
            break;
        }
    }

    if (empty($description)) {
        // 如果没有找到匹配的 <meta> 标签,则使用正则表达式获取网页内容中的第一段文本作为摘要
        preg_match('/<p>(.*?)<\/p>/', $html, $matches);
        if (isset($matches[1])) {
            $description = $matches[1];
        }
    }

    // 进一步处理摘要内容,例如去除 HTML 标签、缩短字符长度等等

} catch (ConnectException $e) {
    // 连接异常处理
} catch (RequestException $e) {
    // 请求异常处理
}

在以上示例代码中,使用 Guzzle HTTP 客户端库向指定网址发送 GET 请求,获取网页的 HTML 内容。接着使用 PHP DOM 解析器获取 <head> 标签中的 <meta> 标签,从中查找 name 属性为 description 或者 property 属性为 og:description 的标签,获取网页描述信息。如果没有找到匹配的 <meta> 标签,则使用正则表达式获取网页内容中的第一段文本作为摘要。最后进行进一步处理,例如去除 HTML 标签、缩短字符长度等等。

评论

无权限

请登录后评论

RunPod公众号

赞助商

联系我们

QQ群:798695907

邮箱:laravel@88.com