如何用PHP解析HTML获取标题并保存至MySQL?(修复Ganon报错500)
解决Ganon解析HTML标题并存储到MySQL的500错误问题
我来帮你排查下问题,顺便把完整的可运行方案整理出来~
首先,你遇到500错误的核心原因是用错了Ganon的函数:file_get_dom()是用来加载本地文件或远程URL的,直接传HTML字符串会导致它尝试把字符串当作文件路径去读取,自然会触发致命错误。处理字符串应该用str_get_dom()。
接下来是修正后的完整代码,包含Ganon解析标题和MySQL存储的逻辑,还加了错误处理避免500错误:
function store($raw) { // 开发环境开启错误显示,方便排查问题 error_reporting(E_ALL); ini_set('display_errors', 1); // 确保ganon.php路径正确,路径错误也会导致500 include_once('ganon.php'); // 用str_get_dom处理HTML字符串,而非file_get_dom $html = str_get_dom($raw); if (!$html) { die('HTML解析失败'); } // 获取title节点,检查节点是否存在 $titleNode = $html('title', 0); if (!$titleNode) { die('未找到title标签'); } // 直接获取title的纯文本内容 $pageTitle = $titleNode->getPlainText(); echo "解析到的标题:{$pageTitle}"; // ------------------- MySQL存储部分 ------------------- // 替换为你的数据库信息 $dbHost = 'localhost'; $dbUser = 'your_username'; $dbPass = 'your_password'; $dbName = 'your_database'; // 建立数据库连接 $conn = mysqli_connect($dbHost, $dbUser, $dbPass, $dbName); if (!$conn) { die('数据库连接失败:' . mysqli_connect_error()); } // 使用预处理语句防止SQL注入 $stmt = mysqli_prepare($conn, "INSERT INTO your_table (page_title) VALUES (?)"); mysqli_stmt_bind_param($stmt, "s", $pageTitle); // 执行插入 if (mysqli_stmt_execute($stmt)) { echo "<br>标题已成功存储到数据库"; } else { echo "<br>存储失败:" . mysqli_error($conn); } // 关闭连接和语句 mysqli_stmt_close($stmt); mysqli_close($conn); } // 测试调用 store('<html><head><title>测试页面标题</title></head><body>内容</body></html>');
关键注意事项
- 确认ganon.php路径正确:如果它在子目录里,要写成
include_once('path/to/ganon.php'),路径错误会直接触发500错误 - 开发环境开启错误显示:上面代码里的
error_reporting和ini_set能帮你看到具体的错误信息,比如找不到文件、数据库连接失败等,避免盲目排查 - 替换MySQL配置:把代码里的数据库地址、账号、密码、库名和表名换成你自己的,确保表结构里有对应存储标题的字段
- 使用预处理语句:避免SQL注入风险,同时能正确处理标题里的特殊字符(比如引号、尖括号)
内容的提问来源于stack exchange,提问作者user9614153
相关产品推荐
相关产品推荐

