Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从html中提取标题标记_Html_Tags_Extract_Title - Fatal编程技术网

从html中提取标题标记

从html中提取标题标记,html,tags,extract,title,Html,Tags,Extract,Title,我想从html字符串中提取标题标签的内容。我已经做了一些搜索,但到目前为止,我无法在VB/C#或PHP中找到这样的代码。此外,这还应适用于大写和小写标记,例如,应同时适用于和。谢谢。听起来像是正则表达式的工作。这将取决于HTML格式是否正确,即只在head元素中找到title元素 Regex regex = new Regex( ".*<head>.*<title>(.*)</title>.*</head>.*",

我想从html字符串中提取标题标签的内容。我已经做了一些搜索,但到目前为止,我无法在VB/C#或PHP中找到这样的代码。此外,这还应适用于大写和小写标记,例如,应同时适用于
和。谢谢。

听起来像是正则表达式的工作。这将取决于HTML格式是否正确,即只在head元素中找到title元素

 Regex regex = new Regex( ".*<head>.*<title>(.*)</title>.*</head>.*",
                          RegexOptions.IgnoreCase );
 Match match = regex.Match( html );
 string title = match.Groups[0].Value;
Regex Regex=new Regex(“.*(......*”),
RegexOptions.IgnoreCase);
Match=regex.Match(html);
字符串标题=匹配。组[0]。值;

我面前没有我的正则表达式备忘单,所以它可能需要一些调整。请注意,在不存在title元素的情况下也不会进行错误检查。

您可以使用正则表达式进行检查,但它不是完全防错的。如果您只是想要一些简单的东西(在PHP中),就可以了:

函数获取标题($html){
返回preg_match('!(.*)!i',$html,$matches)?$matches[1]:'';
}

如果title标记中有任何属性(这不太可能,但可能发生),则需要按如下方式更新表达式:

$title = preg_match('!<title.*>(.*?)</title>!i', $url_content, $matches) ? $matches[1] : '';
$title=preg_match('!(.*)!i',$url_content,$matches)$匹配[1]:“”;

HTML通常不是格式良好的。因此,任何解决方案都会出现错误案例。您可以接受哪些错误案例?我认为应该忽略案例和文档中缺少的标题标记。也许最好的方法是,如果出现错误或缺少标题标记,它应该是一个返回字符串标题值或空字符串的函数。“听起来像是一份工作……比普通的表达者更适合!”白天是开发人员,晚上是超级英雄;)RE:“格式良好”--您不需要将
元素作为HTML 4.01中
的子元素放置。我只指出这一点作为一个例子,说明为什么使用regex和HTML通常会导致沮丧。请参阅:比soypunk正确指出的更糟糕的是,有许多可用的HTML文件的标题无效。e、 如果你要处理现实世界中的HTML,你真的需要使用HTML解析器。那么有人能建议如何使用HTML解析器提取标题吗?看起来这个函数区分大小写,如果它是大写的,这个函数不会提取标题,您可以更改此函数以忽略大小写吗?模式后的“i”标志使其不区分大小写。
$title = preg_match('!<title.*>(.*?)</title>!i', $url_content, $matches) ? $matches[1] : '';