Je veux extraire le contenu de la balise de titre de la chaîne html. J'ai fait quelques recherches mais jusqu'ici je ne suis pas capable de trouver un tel code en VB/C# ou en PHP. Cela devrait également fonctionner avec des étiquettes majuscules et minuscules, par ex. devrait fonctionner avec <title></title>
et < TITLE></TITLE>
. Je vous remercie.extrait la balise de titre de html
Répondre
Cela ressemble à un travail pour une expression régulière. Cela dépend du fait que le code HTML est bien formé, c'est-à-dire qu'il ne trouve que l'élément titre dans un élément head.
Regex regex = new Regex(".*<head>.*<title>(.*)</title>.*</head>.*",
RegexOptions.IgnoreCase);
Match match = regex.Match(html);
string title = match.Groups[0].Value;
Je n'ai pas mon antisèche regex devant moi, donc il peut avoir besoin d'un peu de peaufinage. Notez qu'il n'y a pas de vérification d'erreur dans le cas où aucun élément title n'existe.
"Cela ressemble à un travail pour ... l'Expressor Plus-que-Régulier!" Un développeur de jour, un super-héros de nuit;) – Piskvor
RE: "Bien formé" - Vous n'êtes pas obligé de placer l'élément '
Même pire que soypunk souligne correctement, il existe de nombreux fichiers HTML utilisables avec un titre qui ne sont pas valides. par exemple.
Vous pouvez utiliser des expressions régulières pour cela, mais ce n'est pas complètement à l'épreuve des erreurs. Il fera si vous voulez juste quelque chose de simple mais (en PHP):
function get_title($html) {
return preg_match('!<title>(.*?)</title>!i', $html, $matches) ? $matches[1] : '';
}
On dirait que cette fonction est sensible à la casse, cette fonction n'extrait pas le titre si c'est en majuscule, pouvez-vous modifier cette fonction pour ignorer le cas? –
Le drapeau 'i' après le motif le rend insensible à la casse. – cletus
S'il y a un attribut dans la balise de titre (ce qui est peu probable, mais peut arriver), vous devez mettre à jour l'expression comme suit:
$title = preg_match('!<title.*>(.*?)</title>!i', $url_content, $matches) ? $matches[1] : '';
En général, le format HTML n'est pas bien formé. Par conséquent, toute solution viendra avec des cas d'erreur. Quels cas d'erreur sont acceptables pour vous? –
Je pense qu'il devrait ignorer le cas et l'étiquette de titre manquante du document. Peut-être que, dans le meilleur des cas, cela devrait être une fonction qui retourne une valeur de titre de chaîne ou une chaîne vide s'il y a une erreur ou une balise de titre est manquante. –