[英]Extract ticket number from string
我想從包含數字和字母的字符串中提取票號:
String 1) Order 2555225552 Ticket Number [TICKET 201805000000012345]
String 2) Order 32234234234 Ticket Number [TICKET <span>201805000000012345</span>]
String 3) Order 5656567655665565 Ticket Number [ TICKET <span> 201805000000012345</span> ]
我想在這里從輸入字符串(1、2或3)中獲取數字201805000000012345或任何其他數字。
$matches = array();
preg_match('/\[TICKET(.*)([0-9]+)(.*)\]/', 'Ticket Number [TICKET <span>201805000000012345</span>]', $matches);
輸出:
array:4 [
0 => "[TICKET <span>201805000000012345</span>]"
1 => " <span>20180500000001234"
2 => "5"
3 => "</span>"
]
您的正則表達式基本上是正確的。 您只需要添加一個?
使它不貪心。
/\[TICKET(.*?)([0-9]+)(.*)\]/
實際上,如果您不關心數字后面的內容,也可以忽略該部分:
/\[TICKET(.*?)([0-9]+)/
preg_match()
解決方案:
$s = 'Order 5656567655665565 Ticket Number [ TICKET <span> 201805000000012345</span>';
preg_match('/TICKET [^0-9]*\K[0-9]+/', $s, $m);
$t_number = isset($m[0])? $m[0] : null;
print_r($t_number);
\\K
重置報告的比賽的起點。 最終比賽中將不再包含任何以前消耗的字符 輸出:
201805000000012345
像這樣簡單的正則表達式將解決您的問題:
'\D+\d+\D+(\d+)'
如果需要,您還可以獲取訂單:
'\D+(\d+)\D+(\d+)'
這個正則表達式不會像其他答案一樣檢查格式是否匹配,但是如果您知道它總是像示例中那樣,那么這不是問題
嘗試這個:
<?php
$matches = array();
preg_match('/\[TICKET(.*)([0-9]+)(.*)\]/', strip_tags('Ticket Number [TICKET <span>201805000000012345</span>]'), $matches);
print_r( $matches);
?>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.