2009-04-04 13 views
2

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

+0

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? –

+0

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. –

Répondre

3

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.

+2

"Cela ressemble à un travail pour ... l'Expressor Plus-que-Régulier!" Un développeur de jour, un super-héros de nuit;) – Piskvor

+0

RE: "Bien formé" - Vous n'êtes pas obligé de placer l'élément '' en tant qu'enfant de '<head>' en HTML 4.01. Je signale seulement ceci comme un exemple de pourquoi l'utilisation de regex et HTML conduit généralement à la frustration. Voir: http://shawn.medero.net/demos/valid-html4/ – <span class="text-secondary"> <small> <a rel="noopener" target="_blank" href="https://stackoverflow.com/users/26512/">soypunk</a></span> <span></span> </small> </span> </p> </div> </div> </div> <div itemprop="comment" class="post-comment"> <div class="row"> <div class="col-lg-1"><span class="text-secondary">+0</span></div> <div class="col-lg-11"> <p class="commenttext">Même pire que soypunk souligne correctement, il existe de nombreux fichiers HTML utilisables avec un titre qui ne sont pas valides. par exemple. <tiTlE> a <boDy> b Vous avez vraiment besoin d'utiliser un analyseur HTML si vous voulez gérer du HTML réel. – <span class="text-secondary"> <small> <a rel="noopener" target="_blank" href="https://stackoverflow.com/users/42585/">Alohci</a></span> <span></span> </small> </span> </p> </div> </div> </div> </div> </div> </article> <div> <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-6208739752673518" data-ad-slot="1038284119" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <article class="board-top-1 padding-top-10"> <div class="post-col vote-info"> <span class="count">7<i class="fa fa-thumbs-up"></i></span> </div> <div class="post-offset"> <div class="answer fmt"> <p>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):</p> <pre><code class="prettyprint-override">function get_title($html) { return preg_match('!<title>(.*?)</title>!i', $html, $matches) ? $matches[1] : ''; } </code></pre> </div> <div class="post-info"> <div class="post-meta row"> <p class="text-secondary col-lg-6"> <span class="source"> <a rel="noopener" target="_blank" href="https://stackoverflow.com/q/717126">Source</a> </span> </p> <p class="text-secondary col-lg-6"> <span class="float-right date"> <span>2009-04-04 13:52:04</span> <a rel="noopener" target="_blank" href="https://stackoverflow.com/users/18393/">cletus</a></span> </p> <p class="col-12"></p> <p class="col-12"></p></div> </div> <!-- comments --> <div class="comments"> <div itemprop="comment" class="post-comment"> <div class="row"> <div class="col-lg-1"><span class="text-secondary">+0</span></div> <div class="col-lg-11"> <p class="commenttext">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? – <span class="text-secondary"> <small> <span></span> </small> </span> </p> </div> </div> </div> <div itemprop="comment" class="post-comment"> <div class="row"> <div class="col-lg-1"><span class="text-secondary">+0</span></div> <div class="col-lg-11"> <p class="commenttext">Le drapeau 'i' après le motif le rend insensible à la casse. – <span class="text-secondary"> <small> <a rel="noopener" target="_blank" href="https://stackoverflow.com/users/18393/">cletus</a></span> <span></span> </small> </span> </p> </div> </div> </div> </div> </div> </article> <article class="board-top-1 padding-top-10"> <div class="post-col vote-info"> <span class="count">0<i class="fa fa-thumbs-up"></i></span> </div> <div class="post-offset"> <div class="answer fmt"> <p>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:</p> <pre><code class="prettyprint-override">$title = preg_match('!<title.*>(.*?)</title>!i', $url_content, $matches) ? $matches[1] : ''; </code></pre> </div> <div class="post-info"> <div class="post-meta row"> <p class="text-secondary col-lg-6"> <span class="source"> <a rel="noopener" target="_blank" href="https://stackoverflow.com/q/19807853">Source</a> </span> </p> <p class="text-secondary col-lg-6"> <span class="float-right date"> <span>2013-11-06 09:08:47</span> </p> <p class="col-12"></p> <p class="col-12"></p></div> </div> </div> </article> </div> <div class="clearfix"> </div> <div> <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <ins class="adsbygoogle" style="display:block" data-ad-format="autorelaxed" data-ad-client="ca-pub-6208739752673518" data-ad-slot="1575177025"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <div class="padding-top-10"></div> </div> </div> <script type="text/javascript" src="http://img.uwenku.com/uwenku/script/side.js?t=1644592048548"></script> <script type="text/javascript" src="http://img.uwenku.com/uwenku/plugin/highlight/highlight.pack.js"></script> <link href="http://img.uwenku.com/uwenku/plugin/highlight/styles/docco.css" media="screen" rel="stylesheet" type="text/css" /> <script type="text/javascript"> $('pre').each(function(i, e) { hljs.highlightBlock(e, "<span class='indent'> </span>", false) }); </script> <div class="col-lg-3 col-md-4 col-sm-5"> <div id="rightTop"> <div class="row"> <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-6208739752673518" data-ad-slot="5415218910" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <div class="row sidebar panel panel-default"> <div class="panel-heading font-bold"> Dernière question </div> <div class="m-b-sm m-t-sm clearfix"> <ul class="side_article_list"> <li class="side_article_list_item"> 1. <a href="http://fr.uwenku.com/question/p-zeiodxad-bz.html" target="_blank" title="Android: comment laisser un service en cours après la fermeture des activités?"> Android: comment laisser un service en cours après la fermeture des activités? </a> </li> <li class="side_article_list_item"> 2. <a href="http://fr.uwenku.com/question/p-xmvurxpo-ca.html" target="_blank" title="Arrêt de AVPlayer sur iOS"> Arrêt de AVPlayer sur iOS </a> </li> <li class="side_article_list_item"> 3. <a href="http://fr.uwenku.com/question/p-krkxgmde-ca.html" target="_blank" title="Dites Xcode de lancer sur iPad seulement"> Dites Xcode de lancer sur iPad seulement </a> </li> <li class="side_article_list_item"> 4. <a href="http://fr.uwenku.com/question/p-fnrdfddv-cd.html" target="_blank" title="Comment connecter seekbar dans Activity avec player in Service?"> Comment connecter seekbar dans Activity avec player in Service? </a> </li> <li class="side_article_list_item"> 5. <a href="http://fr.uwenku.com/question/p-nlfnsqzl-cc.html" target="_blank" title="Appel de WSDL avec différents espaces de noms avec Ksoap2 dans Android"> Appel de WSDL avec différents espaces de noms avec Ksoap2 dans Android </a> </li> <li class="side_article_list_item"> 6. <a href="http://fr.uwenku.com/question/p-krnzghkz-co.html" target="_blank" title="problème lors de l'utilisation UIColor RGB noir comme une clé dans une NSMutableDictionary"> problème lors de l'utilisation UIColor RGB noir comme une clé dans une NSMutableDictionary </a> </li> <li class="side_article_list_item"> 7. <a href="http://fr.uwenku.com/question/p-xpnvcdco-cn.html" target="_blank" title="Problèmes zIndex CSS. Lien à l'intérieur"> Problèmes zIndex CSS. Lien à l'intérieur </a> </li> <li class="side_article_list_item"> 8. <a href="http://fr.uwenku.com/question/p-cydiadgi-cq.html" target="_blank" title="Développement d'application de courtier: Trouver les flux auxquels appartient mon sous-flux"> Développement d'application de courtier: Trouver les flux auxquels appartient mon sous-flux </a> </li> <li class="side_article_list_item"> 9. <a href="http://fr.uwenku.com/question/p-pscaeosk-cp.html" target="_blank" title="Première programmation dans le module livewires, Comment créer une page de démarrage pour mon jeu exécutable?"> Première programmation dans le module livewires, Comment créer une page de démarrage pour mon jeu exécutable? </a> </li> <li class="side_article_list_item"> 10. <a href="http://fr.uwenku.com/question/p-gcaunrvq-bx.html" target="_blank" title="Limitation de la hauteur affichée d'une liste déroulante de sélection"> Limitation de la hauteur affichée d'une liste déroulante de sélection </a> </li> </ul> </div> </div> </div> <p class="article-nav-bar"></p> <div class="row sidebar article-nav"> <div class="row box_white visible-sm visible-md visible-lg margin-zero"> <div class="top"> <h3 class="title"><i class="glyphicon glyphicon-th-list"></i> Questions connexes</h3> </div> <div class="article-relative-content"> <ul class="side_article_list"> <li class="side_article_list_item">Aucun problème connexe^_^</li> </ul> </div> </div> </div> </div> </div> </div> </div><!-- wrap end--> <!-- footer --> <footer id="footer"> <div class="bg-simple lt"> <div class="container"> <div class="row padder-v m-t"> <div class="col-xs-8"> <ul class="list-inline"> <li><a href="http://fr.uwenku.com/contact">Nous contacter</a></li> <li>© 2020 FR.UWENKU.COM</li> <li><a target="_blank" href="https://beian.miit.gov.cn/">沪ICP备13005482号-4</a></li> <li><script type="text/javascript" src="https://v1.cnzz.com/z_stat.php?id=1280101193&web_id=1280101193"></script></li> <li><a href="http://www.uwenku.com/" target="_blank" title="优文库">简体中文</a></li> <li><a href="http://hk.uwenku.com/" target="_blank" title="優文庫">繁體中文</a></li> <li><a href="http://ru.uwenku.com/" target="_blank" title="поле вопросов и ответов">Русский</a></li> <li><a href="http://de.uwenku.com/" target="_blank" title="Frage - und - antwort - Park">Deutsch</a></li> <li><a href="http://es.uwenku.com/" target="_blank" title="Preguntas y respuestas">Español</a></li> <li><a href="http://hi.uwenku.com/" target="_blank" title="कार्यक्रम प्रश्न और उत्तर पार्क">हिन्दी</a></li> <li><a href="http://it.uwenku.com/" target="_blank" title="IL Programma di chiedere Park">Italiano</a></li> <li><a href="http://ja.uwenku.com/" target="_blank" title="プログラム問答園区">日本語</a></li> <li><a href="http://ko.uwenku.com/" target="_blank" title="프로그램 문답 단지">한국어</a></li> <li><a href="http://pl.uwenku.com/" target="_blank" title="program o park">Polski</a></li> <li><a href="http://tr.uwenku.com/" target="_blank" title="Program soru ve cevap parkı">Türkçe</a></li> <li><a href="http://vi.uwenku.com/" target="_blank" title="Đáp ứng viên">Tiếng Việt</a></li> <li><a href="http://fr.uwenku.com/" target="_blank" title="Programme interrogation Park">Française</a></li> </ul> </div> </div> </div> </div> </div> </footer> <!-- / footer --> <script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?f78a970f17b19a79fc477a3378096f29"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script> </body> </html>