2017-04-30 32 views
-1

我有這樣的字符串,它表示一個title標籤:認識標題標籤使用正則表達式

$fp = '<title>This is my title</title>'; 

我承認上面的標題使用下面的正則表達式字符串:

$res = preg_match("/<title>(.*)<\/title>/siU", $fp, $title_matches); 

的問題在於某些標題具有以下某些參數:

<title itemprop="name">This is my title</title> 

因此,正則表達式無法處理這種類型的標題,那麼如何更新我的正則表達式來識別兩個標題?

+1

不要使用正則表達式來解析HTML,使用HTML解析器,東西像DOMDocument –

+0

http://htmlparsing.com/regexes.html給出了更多的例子,你爲什麼不想用正則表達式來做到這一點。 –

回答

3

唐不使用正則表達式來解析html,使用html解析器,像DOMDocument,即:

$dom = new DOMDocument(); 
$dom->loadHTML($fp); 
$tags = $dom->getElementsByTagName('title'); 

foreach($tags as $tag) 
{ 
    print $tag->nodeValue; 
} 

如果你只需要1個標籤,你可以使用:

$dom = new DOMDocument(); 
$dom->loadHTML($fp); 
print $dom->getElementsByTagName('title')[0]->nodeValue; 
# or 
$xpath = new DOMXpath($dom); 
print $xpath->query("//title")[0]->nodeValue; 
+1

這應該是正確的答案。 – Jan

1

基本上@ chris85的想法,但微調。

$res = preg_match("/<title[^>]*>(.*)<\/title>/siU", $fp, $title_matches); 
+0

什麼是微調?這不是我的回答/評論嗎? – chris85

+0

這是我們同時創建的答案。從你的(現在刪除的)評論中微調,不要求至少有一個非'''.Sorry,我認爲你已經完成並繼續前進。 – Yunnosch

1

希望這將幫助你..

正則表達式:<title[^>]*>\s*\K.*?(?=<\/title>)

<title[^>]*>將匹配<title和直到>

2.\s*\K.*?(?=<\/title>)*個任選含有空格\s*\K將復位電流的匹配,.*?這將匹配所有Till和積極展望爲</title>)

Try this code snippet here

<?php 
ini_set('display_errors', 1); 
$fp='<title itemprop="name">This is my title</title>'; 
$res = preg_match("/<title[^>]*>\s*\K.*?(?=<\/title>)/", $fp, $title_matches); 
print_r($title_matches); 

輸出:

Array 
(
    [0] => This is my title 
) 
+0

@ chris85 yaahh ..我想你是對的...讓我檢查.. –

+0

@SahilGulati雖然我很欣賞有關'\ K'的學習,但我仍然想知道爲什麼這麼做。 OP似乎對使用捕獲組感到滿意,而我(當前,缺乏經驗)認爲重置構造對於相同的結果更加努力。 (順便說一句,我刪除了其他評論,你可能也想這樣做,以減少對他人的混淆。) – Yunnosch

+0

如果它是'$ fp =「 \ nthis是我的標題\ n \ n」'?如果有兩個''標籤,但第一個標籤被註釋掉了呢? – <span class="text-secondary"> <small> <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> </div> <div class="clearfix"> </div> <div class="relative-box"> <div class="relative">相關問題</div> <ul class="relative_list"> <li> 1. <a href="http://hk.uwenku.com/question/p-mhwnytgp-ga.html" target="_blank" title="標題標籤與正則表達式"> 標題標籤與正則表達式 </a> </li> <li> 2. <a href="http://hk.uwenku.com/question/p-tmoouugk-baw.html" target="_blank" title="正則表達式#標籤"> 正則表達式#標籤 </a> </li> <li> 3. <a href="http://hk.uwenku.com/question/p-tdjqedfe-bkt.html" target="_blank" title="正則表達式,標籤"> 正則表達式,標籤 </a> </li> <li> 4. <a href="http://hk.uwenku.com/question/p-zmeobvqc-bkb.html" target="_blank" title="Flex正則表達式來標識AWK正則表達式"> Flex正則表達式來標識AWK正則表達式 </a> </li> <li> 5. <a href="http://hk.uwenku.com/question/p-xjrpjydo-sy.html" target="_blank" title="兩個標籤用正則表達式"> 兩個標籤用正則表達式 </a> </li> <li> 6. <a href="http://hk.uwenku.com/question/p-cawqypoh-kt.html" target="_blank" title="正則表達式引用標籤php"> 正則表達式引用標籤php </a> </li> <li> 7. <a href="http://hk.uwenku.com/question/p-agmbfamh-ky.html" target="_blank" title="C標識符的正則表達式"> C標識符的正則表達式 </a> </li> <li> 8. <a href="http://hk.uwenku.com/question/p-phwqjbuw-ue.html" target="_blank" title="使用正則表達式獲取所有主題標籤"> 使用正則表達式獲取所有主題標籤 </a> </li> <li> 9. <a href="http://hk.uwenku.com/question/p-ulweagcq-hc.html" target="_blank" title="找到img標籤用正則表達式標籤"> 找到img標籤用正則表達式標籤 </a> </li> <li> 10. <a href="http://hk.uwenku.com/question/p-ohewfvhw-dg.html" target="_blank" title="正則表達式替換標籤"> 正則表達式替換標籤 </a> </li> <div> <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <ins class="adsbygoogle" style="display:block; text-align:center;" data-ad-layout="in-article" data-ad-format="fluid" data-ad-client="ca-pub-6208739752673518" data-ad-slot="4606349252"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <li> 11. <a href="http://hk.uwenku.com/question/p-mtfbqjrc-mh.html" target="_blank" title="檢索標籤的正則表達式"> 檢索標籤的正則表達式 </a> </li> <li> 12. <a href="http://hk.uwenku.com/question/p-srlvrzlt-pc.html" target="_blank" title="正則表達式來結合標籤"> 正則表達式來結合標籤 </a> </li> <li> 13. <a href="http://hk.uwenku.com/question/p-mmtwecid-rv.html" target="_blank" title="正則表達式替換標籤"> 正則表達式替換標籤 </a> </li> <li> 14. <a href="http://hk.uwenku.com/question/p-vwxaeimt-xq.html" target="_blank" title="正則表達式替換HTML標籤"> 正則表達式替換HTML標籤 </a> </li> <li> 15. <a href="http://hk.uwenku.com/question/p-hptbuynh-ws.html" target="_blank" title="正則表達式嵌套標籤"> 正則表達式嵌套標籤 </a> </li> <li> 16. <a href="http://hk.uwenku.com/question/p-cfgaepda-vz.html" target="_blank" title="正則表達式查找標籤(preg_replace_callback)"> 正則表達式查找標籤(preg_replace_callback) </a> </li> <li> 17. <a href="http://hk.uwenku.com/question/p-cbxhqbhv-bhc.html" target="_blank" title="幫助與正則表達式:標籤"> 幫助與正則表達式:標籤 </a> </li> <li> 18. <a href="http://hk.uwenku.com/question/p-tgayctow-bnd.html" target="_blank" title="C#正則表達式提取標籤"> C#正則表達式提取標籤 </a> </li> <li> 19. <a href="http://hk.uwenku.com/question/p-psckpamv-hs.html" target="_blank" title="正則表達式匹配的標籤"> 正則表達式匹配的標籤 </a> </li> <li> 20. <a href="http://hk.uwenku.com/question/p-rrpxamyd-ox.html" target="_blank" title="正則表達式的HTML標籤內"> 正則表達式的HTML標籤內 </a> </li> <li> 21. <a href="http://hk.uwenku.com/question/p-auzwejmk-tp.html" target="_blank" title="HTML正則表達式忽略標籤"> HTML正則表達式忽略標籤 </a> </li> <li> 22. <a href="http://hk.uwenku.com/question/p-aoxmwxzl-yx.html" target="_blank" title="正則表達式解析ID3v2標籤"> 正則表達式解析ID3v2標籤 </a> </li> <li> 23. <a href="http://hk.uwenku.com/question/p-sfbqhnxc-bdw.html" target="_blank" title="正則表達式相對標籤"> 正則表達式相對標籤 </a> </li> <li> 24. <a href="http://hk.uwenku.com/question/p-dzfdnrhn-cp.html" target="_blank" title="正則表達式忽略HTML標籤"> 正則表達式忽略HTML標籤 </a> </li> <li> 25. <a href="http://hk.uwenku.com/question/p-vfzfgswm-hh.html" target="_blank" title="正則表達式php標籤"> 正則表達式php標籤 </a> </li> <li> 26. <a href="http://hk.uwenku.com/question/p-arxrdtne-nm.html" target="_blank" title="正則表達式剝離HTML標籤"> 正則表達式剝離HTML標籤 </a> </li> <li> 27. <a href="http://hk.uwenku.com/question/p-bgjzilrr-oz.html" target="_blank" title="正則表達式的HTML標籤"> 正則表達式的HTML標籤 </a> </li> <li> 28. <a href="http://hk.uwenku.com/question/p-gxcmijxi-uv.html" target="_blank" title="正則表達式匹配的標籤"> 正則表達式匹配的標籤 </a> </li> <li> 29. <a href="http://hk.uwenku.com/question/p-hrddzvga-bao.html" target="_blank" title="正則表達式查找標籤"> 正則表達式查找標籤 </a> </li> <li> 30. <a href="http://hk.uwenku.com/question/p-ajizrmho-zd.html" target="_blank" title="正則表達式轉義標籤鍵"> 正則表達式轉義標籤鍵 </a> </li> </ul> </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=1644592048261"></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"> 最新問題 </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://hk.uwenku.com/question/p-aqufpjkf-bdz.html" target="_blank" title="通過全局變量遍歷()字典"> 通過全局變量遍歷()字典 </a> </li> <li class="side_article_list_item"> 2. <a href="http://hk.uwenku.com/question/p-xlscueyg-bdt.html" target="_blank" title="爲什麼Web元素只在一個列表中的一個元素?"> 爲什麼Web元素只在一個列表中的一個元素? </a> </li> <li class="side_article_list_item"> 3. <a href="http://hk.uwenku.com/question/p-nufpecky-bep.html" target="_blank" title="重定向與被迫小寫字母來識別文件名"> 重定向與被迫小寫字母來識別文件名 </a> </li> <li class="side_article_list_item"> 4. <a href="http://hk.uwenku.com/question/p-gojvozdy-beg.html" target="_blank" title="html-webpack-plugin如何與html-loader一起使用?"> html-webpack-plugin如何與html-loader一起使用? </a> </li> <li class="side_article_list_item"> 5. <a href="http://hk.uwenku.com/question/p-qwlqkjgk-bgc.html" target="_blank" title="如何從gridview設置onClick圖像?"> 如何從gridview設置onClick圖像? </a> </li> <li class="side_article_list_item"> 6. <a href="http://hk.uwenku.com/question/p-ynvpawpg-bev.html" target="_blank" title="實施ReactJS成角應用"> 實施ReactJS成角應用 </a> </li> <li class="side_article_list_item"> 7. <a href="http://hk.uwenku.com/question/p-bgyevfoe-bgm.html" target="_blank" title="如何編輯kendogrid的pageSize的使100在1-10這個改變顏色,點擊執行功能"> 如何編輯kendogrid的pageSize的使100在1-10這個改變顏色,點擊執行功能 </a> </li> <li class="side_article_list_item"> 8. <a href="http://hk.uwenku.com/question/p-fwspgjzb-bna.html" target="_blank" title="JavaFX 8:FXML的重用"> JavaFX 8:FXML的重用 </a> </li> <li class="side_article_list_item"> 9. <a href="http://hk.uwenku.com/question/p-xbmqmbpw-bmt.html" target="_blank" title="C中ICMPv6校驗和計算返回錯誤結果"> C中ICMPv6校驗和計算返回錯誤結果 </a> </li> <li class="side_article_list_item"> 10. <a href="http://hk.uwenku.com/question/p-bdvjbruj-bmn.html" target="_blank" title="Array.Filter和找不到錯誤角度4"> Array.Filter和找不到錯誤角度4 </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> 相關問題</h3> </div> <div class="article-relative-content"> <ul class="side_article_list"> <li class="side_article_list_item"> 1. <a href="http://hk.uwenku.com/question/p-mhwnytgp-ga.html" target="_blank" title="標題標籤與正則表達式"> 標題標籤與正則表達式 </a> </li> <li class="side_article_list_item"> 2. <a href="http://hk.uwenku.com/question/p-tmoouugk-baw.html" target="_blank" title="正則表達式#標籤"> 正則表達式#標籤 </a> </li> <li class="side_article_list_item"> 3. <a href="http://hk.uwenku.com/question/p-tdjqedfe-bkt.html" target="_blank" title="正則表達式,標籤"> 正則表達式,標籤 </a> </li> <li class="side_article_list_item"> 4. <a href="http://hk.uwenku.com/question/p-zmeobvqc-bkb.html" target="_blank" title="Flex正則表達式來標識AWK正則表達式"> Flex正則表達式來標識AWK正則表達式 </a> </li> <li class="side_article_list_item"> 5. <a href="http://hk.uwenku.com/question/p-xjrpjydo-sy.html" target="_blank" title="兩個標籤用正則表達式"> 兩個標籤用正則表達式 </a> </li> <li class="side_article_list_item"> 6. <a href="http://hk.uwenku.com/question/p-cawqypoh-kt.html" target="_blank" title="正則表達式引用標籤php"> 正則表達式引用標籤php </a> </li> <li class="side_article_list_item"> 7. <a href="http://hk.uwenku.com/question/p-agmbfamh-ky.html" target="_blank" title="C標識符的正則表達式"> C標識符的正則表達式 </a> </li> <li class="side_article_list_item"> 8. <a href="http://hk.uwenku.com/question/p-phwqjbuw-ue.html" target="_blank" title="使用正則表達式獲取所有主題標籤"> 使用正則表達式獲取所有主題標籤 </a> </li> <li class="side_article_list_item"> 9. <a href="http://hk.uwenku.com/question/p-ulweagcq-hc.html" target="_blank" title="找到img標籤用正則表達式標籤"> 找到img標籤用正則表達式標籤 </a> </li> <li class="side_article_list_item"> 10. <a href="http://hk.uwenku.com/question/p-ohewfvhw-dg.html" target="_blank" title="正則表達式替換標籤"> 正則表達式替換標籤 </a> </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://hk.uwenku.com/contact">聯系我們</a></li> <li>© 2020 HK.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>