2016-02-29 22 views
-3

我想從我的字符串變量的4個獨特的數字是一起去的意思....如果有提取12345我不希望它給我1234 ...我想抓住一組只有4個數字的數字。抓鬥正是從PHP字符串4位

我現在的字符串有這樣的:

echo $code

打印

your code is 34 4325 23453 342

我真的只是想它打印

4325

任何形式的幫助我都能得到,非常感謝!

+3

什麼你都試過這麼發R'發佈您的嘗試。 –

+0

標題這個答案是誤導 – vbarbarosh

回答

0

您可以簡單地使用preg_match_all有以下regex

\b(\d{4})\b 

上述正則表達式檢查是否有以下的4

的準確長度的數字,所以你的代碼看起來像作爲

preg_match_all("/\b(\d{4})\b/",$str,$m); 
print_r($m); 
+0

Downvoters張貼downvoting的原因。所以,我可以提高我的答案 –

1

嘗試下面的代碼

preg_match_all('/(\d{4})/', $text, $matches); 
return $matches; 
+0

這將返回到'4325'&'2345' –

0
<?php 

$input = 'your code is 34 4325 23453 342'; 

// 1. extract all numbers 
preg_match_all('/\d+/', $input, $m); 

// 2. find all 4-digits numbers with 4 distinct digits 
foreach ($m[0] as $number) { 
    if (strlen($number) == 4) { 
     if ($number[0] != $number[1] && $number[0] != $number[2] && $number[0] != $number[3] && $number[1] != $number[2] && $number[1] != $number[3] && $number[2] != $number[3]) { 
      echo $number, PHP_EOL; 
     } 
    } 
} 
0
$code = 'your code is 34 4325 23453 342'; 

echo preg_replace('/.*?(\d{4}).*/', '$1', $code); //outputs 4325 
0

好吧,如果你想爲4個位數每塊是唯一的數字,你就會有這樣的正則表達式:

\b(\d)(?!\1)(\d)(?!\1|\2)(\d)(?!\1|\2|\3)(\d)\b 

我認爲你應該使用反向引用這樣的,我可以「找不到另一種方式來做到這一點..

它檢查是否每個數字(\ d)與以往不同