2017-04-05 34 views
0

所以在PHP $a = 1234;$a = (1234);都是有效的整數,1234PHP將字符串轉換(1234)爲整數

我有一些第三方的代碼的情況下我有$a = "(1234)";(即一個字符串)

正常的字符串轉換成int不工作(因爲括號)

<?php 
$b = (int) $a; // 0 
$b = intval($a); // 0 

我可以做類似

preg_match('/^\(([\d]+)\)$/', $a, $m); 
$b = $m[1]; 

想知道是否有一些巧妙的方法將$ a轉換回我已經錯過的整數?

+0

(1234)在會計中意味着-1234,所以不要太快刪除那些括號。 – Augwa

+0

@Augwa會計很奇怪。爲什麼在使用1時使用2個額外的字符? (所有其他領域也會明白這一點) – apokryfos

+2

要做的愚蠢的事情是'eval(「\ $ b = $ a」);'然後檢查'$ b'。我只說這是因爲'$ a =(1234)'實際上並不是PHP中的有效整數,它是一個有效的*表達式*,其值爲整數。通過表達式我的意思是首先評估括號的內容,並將結果存儲在'$ a'中。 – apokryfos

回答

3

的一個選擇可以

$str = "(1234)"; 

$int = (int) trim($str, '()'); 
0

這將確保它是否有(),這使得它成爲負數。

$a = '1234'; 

if (0 !== preg_match('/^\((\d+\))$/', $a, $matches)) { 
    $b = (int)-$matches[1]; 
} else { 
    $b = (int)$a; 
}