簡體   English   中英

從字符串中提取票證編號

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM