2015-11-17 49 views
1

我想找到NUMBER,但跳過H1,H2,H3等..(所有可能的HTML標題變種)如何跳過html標題並用正則表達式找到數字?

例1:

<div>Today is good day. I got<h3>3<span> lotto tickets</span></h3></div> 

例2:

I want to buy lotto tickets. <h1>Maybe 10 is enough</h1> 

實施例3:

I want to buy lotto tickets. <h1>4 or 5</h1> is enough. 

我有這樣的代碼:

lotto tickets\D{0,15}(\d+\,\d+|\d+\.\d+|\d+) 

但每次我從HTML代碼中獲得數.. <h3>(3),<h1>(1)。 我可以跳過他們嗎?

例1我應該得到什麼

例2我應該得到數

例3我應該得到數

(數字可以用示例:2.5)

+3

6歲仍然具有現實意義:http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml -self-contained-tags/1732454#1732454 – CD001

+0

這將確保數字不會在 lintmouse

+0

不應該例1返回3?我在'h3'標籤後看到一個3 – Andrew

回答

1

這是可能正則表達式沒有被正確使用的那些實例之一。

是的,你可以只用正則表達式,但更簡單的方法來做到這一點(以及更快的運行),將首先在你的字符串上運行strip_tags()來擺脫所有的HTML標籤,然後爲數字做一個標準的正則表達式。

$string = "<h3>This is post number 10</h3>"; 
$cleanString = strip_tags($string); 
preg_match("%\b[0-9]+\b%",$cleanString,$number); 
0

您應該使用正則表達式如下:

<h[1-6]>[^\d\<]*(\d+)[^\<]+<\/h[1-6]>