前言:
解释:
案例:
准备:
2.1 typecho_contents表: 文章主要内容,标题,发布时间,分类信息查询id,html内容导入到这里. 2.2 typecho_relationships表: 文章内容表对应 (cid) 和文章分类/或是标签 (mid) 进行关联. 2.3 typecho_metas表:文章分类名,标签名,都是存在这里的,typecho_relationships表mid与这里关联的.
问题:
- -- 如果备份表已存在,先删除
- DROP TABLE IF EXISTS `typecho_contents_bak`;
- -- 创建备份表,结构与原表一致
- CREATE TABLE `typecho_contents_bak` LIKE `typecho_contents`;
- -- 将原表中的数据插入到备份表中
- INSERT INTO `typecho_contents_bak` SELECT * FROM `typecho_contents`;
执行:
<?php
// 加载并解析HTML文件
$htmlFile = 'yourfile.html'; // 替换为你的HTML文件路径
$html = file_get_contents($htmlFile);
$dom = new DOMDocument;
libxml_use_internal_errors(true); // 忽略HTML格式错误
$dom->loadHTML($html);
libxml_clear_errors();
$xpath = new DOMXPath($dom);
// 提取标题
$titleNode = $xpath->query("//h1")->item(0);
$title = $titleNode ? trim($titleNode->textContent) : '';
// 提取发表时间
$dateNode = $xpath->query("//time")->item(0);
$date = $dateNode ? trim($dateNode->textContent) : '';
// 提取分类
$categoryNode = $xpath->query("//div[@class='category']")->item(0);
$category = $categoryNode ? trim($categoryNode->textContent) : '';
// 提取正文内容
$bodyNode = $xpath->query("//div[@class='content']")->item(0);
$body = $bodyNode ? trim($bodyNode->textContent) : '';
// 拼接保存内容
$content = $title . "\n" . $date . "\n" . $category . "\n\n" . $body;
// 生成文件名,去除不合法字符
$filename = preg_replace('/[\/:*?"<>|]/', '', $title) . '.txt';
// 保存到文件
file_put_contents($filename, $content);
echo "保存成功:$filename\n";
?>
问: 上面问题忘记加上批量读取输出,补上 "$htmlFile = 'yourfile.html'; " 将其修改为当前目录下所有的html文件,批量获取并批量保存 答:
<#?php
// 获取当前目录下所有 .html 文件
$htmlFiles = glob("*.html");
foreach ($htmlFiles as $htmlFile) {
// 加载并解析HTML文件
$html = file_get_contents($htmlFile);
$dom = new DOMDocument;
libxml_use_internal_errors(true); // 忽略HTML格式错误
$dom->loadHTML($html);
libxml_clear_errors();
$xpath = new DOMXPath($dom);
// 提取标题
$titleNode = $xpath->query("//h1")->item(0);
$title = $titleNode ? trim($titleNode->textContent) : '未命名';
// 提取发表时间
$dateNode = $xpath->query("//time")->item(0);
$date = $dateNode ? trim($dateNode->textContent) : '未知日期';
// 提取分类
$categoryNode = $xpath->query("//div[@class='category']")->item(0);
$category = $categoryNode ? trim($categoryNode->textContent) : '未分类';
// 提取正文内容
$bodyNode = $xpath->query("//div[@class='content']")->item(0);
$body = $bodyNode ? trim($bodyNode->textContent) : '无内容';
// 拼接保存内容
$content = $title . "\n" . $date . "\n" . $category . "\n\n" . $body;
// 生成文件名,去除不合法字符
$filename = preg_replace('/[\/:*?"<>|]/', '', $title) . '.txt';
// 如果生成的文件名为空或与已存在的文件名冲突,使用原文件名作为基础
if (empty($filename) || file_exists($filename)) {
$filename = pathinfo($htmlFile, PATHINFO_FILENAME) . '.txt';
}
// 保存到文件
file_put_contents($filename, $content);
echo "保存成功:$filename\n";
'}
#?#>
验证结果: 无法获取发布日期,文章内容
问: (发现提取处理的txt无正文内容与标题,但是目录内txt过多故出现新问题) PHP删除当前目录下所有txt后缀文件,给出案例代码 答:
<?php
// 获取当前目录下所有 .txt 文件
$txtFiles = glob("*.txt");
foreach ($txtFiles as $txtFile) {
// 尝试删除文件
if (unlink($txtFile)) {
echo "成功删除文件: $txtFile\n";
} else {
echo "无法删除文件: $txtFile\n";
}
}
?>
执行结果: 成功删除所有txt文件
问: 提供html源码示例如下:
<title>根据句柄取进程路径- 紫灵幽梦</title>
<div class="entry">
<div class="person-info">
<span style="font-size: 75%;color: #393939;">2016-11-8 <br />18:29</span>
<br />
<a style="text-decoration: none" target="_blank" href="">
<img class="face" src="http://zlym.cc/zb_users/theme/ubuntu2/style/ubuntu2/heads/1.png" alt="root" />
<br />root
</a>
</div>
<div class="post">
<div class="post2">
<div class="post-header">
<div class="post-header-left"><div class="post-header-right">
<h4 class="post-title"><a>[程序代码]根据句柄取进程路径 </a> </h4>
</div></div>
</div>
<div class="post-contents">
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long<br />
Private Sub Command1_Click()<br />
Dim PID As Long<br />
GetWindowThreadProcessId Text1, PID '根据句柄取得进程ID,text1为句柄<br />
<br />
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\.\root\cimv2")<br />
Set colProcesses = objWMIService.ExecQuery("SELECT * FROM Win32_Process")<br />
For Each objprocess In colProcesses<br />
<br />
If objprocess.processid = PID Then '当某进程ID与句柄ID相同时<br />
Text2 = objprocess.ExecutablePath '取得进程路径<br />
End If<br />
<br />
Next<br />
End Sub<br />
'----------------------------------------------------根据句柄取进程路径<br />
<br />
<div style="margin-top: 20pt;"></div>
<?php
// 获取当前目录下所有 .html 文件
$htmlFiles = glob("*.html");
foreach ($htmlFiles as $htmlFile) {
// 加载并解析HTML文件
$html = file_get_contents($htmlFile);
$dom = new DOMDocument;
libxml_use_internal_errors(true); // 忽略HTML格式错误
$dom->loadHTML($html);
libxml_clear_errors();
$xpath = new DOMXPath($dom);
// 提取标题
$titleNode = $xpath->query("//h1")->item(0);
$title = $title
已有评论: