簡體   English   中英

PHP字符串刪除除中心數字以外的所有內容?

[英]PHP string remove everything but center numbers?

我有一個字符串“ Mod。816-10 025”,我想刪除除816-10之外的所有內容。

條件:

  • 中間的數字將始終為###-##
  • 它可能不是3個數字-2個數字,但始終是空格數字

有人能幫我嗎? 我試過像5種不同的正則表達式,但沒有成功。

$text = "Mod. 816-10 025";
echo preg_replace('~.+ (\d+-\d+) .+~', '\1', $text);
// prints: 816-10
<?php
# ...
$pattern = '/\d+-\d+/';
$matches = array();
preg_match($pattern, $input, $matches);

現在$matches[0]將有NUM-NUM個字符串。 如果您想限制數字的大小(如果一直在2到3位之間,則模式可能類似於/\\d{2,3}-\\d{2,3}/

如果情況始終存在,則無需RegEx:

$string = explode(" ","Mod. 816-10 025");
$number = $string[1];

注意:使用php本機函數通常比強大的RegEx更快。

$foo = "Mod. 816-10 025";
$bar = explode(" ", $foo);
$result = $bar[1];

所有這些答案可能都是正確的,這僅取決於您要查找的內容。

人們發布有關preg_replace答案的信息,但是除了空格之外,他們什么都沒有照顧。 如果您喜歡preg_replace()而不是preg_match() ,我寧願使用

preg_replace('/.*\s+(\d+-\d+)\s+.*/', '$1', $input);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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