2011-03-07 283 views
0

我有一個如下所示的字符串序列:<x:object*10/>。 我想用另一個取決於它是什麼號碼的標籤來替換該標籤。 我將上面的標籤與/<x:object\*[0-9]+\/>/匹配,並使用preg_replace,我可以用我想要的內容替換它。我現在只需要這個號碼。PHP正則表達式 - 從字符串獲取數字

我怎樣才能得到這個號碼?

+0

什麼樣的標記是''應該是什麼? – Gordon 2011-03-07 10:30:17

+0

這是一個來自CMS的自定義thingy,告訴輸出解析器用一個對象(照片庫,VideoPlayer,AudioPlayer等)替換它,ID爲10. – Francisc 2011-03-07 10:33:21

+0

儘管這是無效的XML。元素名稱不能包含*字符。如果您使用格式良好的XML,則不必使用Regex,但可以使用適當的XML解析器,如DOM。 – Gordon 2011-03-07 11:01:11

回答

4

通過捕獲它:

/<x:object\*(?P<my_number>[0-9]+)\/>/

它將與名爲 「my_number」 被捕獲...

全部代碼將是某事像這樣:

<?php 
preg_match_all(`/<x:object\*(?P<my_number>[0-9]+)\/>/`, $where_to_search, $matches); 
var_dump($matches); // Dump the matches to see in detail. 
?> 
+0

謝謝謝赫。 – Francisc 2011-03-07 10:34:29

+0

最受歡迎:) – 2011-03-07 10:55:19

0

更好地利用

/<x:object\*([0-9]+)\/>/ 
+0

嗨,爲什麼添加額外的正斜槓? – Francisc 2011-03-07 10:22:02

+0

bcoz'*'在正則表達式中有diffrenet的含義,你在給定的字符串中有'*','\'是轉義字符 – diEcho 2011-03-07 10:25:46

+0

我知道它在RegEx中有意義,這就是爲什麼我用'\ *'轉義。 – Francisc 2011-03-07 10:27:34

2

試試這個:)

/<x:object\*([0-9]+)\/>/ 
+0

謝謝你,尼克。 – Francisc 2011-03-07 10:35:02