preg_match
是PHP中用于执行正则表达式匹配的函数,可以从字符串中提取符合特定模式的内容。在从文章中获取标题的场景中,通常需要匹配HTML文档中的<h1>
到<h6>
标签内容或特定格式的文本行。
$html = '<h1>这是主标题</h1><p>内容...</p><h2>副标题</h2>';
$pattern = '/<h[1-6][^>]*>(.*?)<\/h[1-6]>/i';
if (preg_match_all($pattern, $html, $matches)) {
print_r($matches[1]); // 输出所有匹配的标题内容
}
$markdown = "# 标题1\n内容...\n## 标题2\n更多内容";
$pattern = '/^#{1,6}\s+(.+)$/m';
if (preg_match_all($pattern, $markdown, $matches)) {
print_r($matches[1]); // 输出所有匹配的标题内容
}
$text = "重要通知\n=========\n这是内容\n章节一\n-------\n更多内容";
$pattern = '/^(.+)\n[=|-]+\s*$/m';
if (preg_match_all($pattern, $text, $matches)) {
print_r($matches[1]); // 输出所有匹配的标题内容
}
原因:
解决:
// 确保使用多行模式(m修饰符)
$pattern = '/<h1>(.*?)<\/h1>/im';
原因:
解决:
// 更精确的匹配,考虑标签属性
$pattern = '/<h1\b[^>]*>(.*?)<\/h1>/i';
原因:
解决:
// 使用更简单的模式或考虑使用DOM解析器
$pattern = '/<h1>(.*?)<\/h1>/i';
if (preg_match($pattern, $html, $matches)) {
// 只匹配第一个h1标签
}
没有搜到相关的文章