我正在嘗試使用正則表達式從字符串中挑選電話號碼,其中電話號碼的格式可能只是任何內容,或者可能沒有電話數字。例如:從字符串中挑選電話號碼(正則表達式)
$string = 'My phone number is +34 961 123456.';
$string = 'My phone number is +34 (961) 123456.';
$string = 'My phone number is 961-123456.';
$string = 'My phone number is +34.961.12.34.56.';
$string = 'Product A costs €100.00 and Product B costs €134.15.';
到目前爲止,我得
$number = preg_replace("/[^0-9\/\+\.\-\s]+/", "", $string);
$number = preg_replace("/[^0-9]+/", "", $number);
if (strlen($number)>8) {
/* It's a phone number, so do something with it */
}
這適用於挑選出所有的,我已經嘗試了不同的電話號碼格式,但它也把價格一起,並假定他們也是一個電話號碼。
看來我的問題是,一個人可以很容易區分單詞和電話號碼中間的空格之間的空間,但我該如何讓電腦做到這一點?有沒有辦法可以替換數字前後的空格,但保留其他空格不變?有沒有其他的方法來整理呢?
「重複」問題的答案僅適用於輸入中的所有數字都屬於電話號碼 – alexis
而不是「+」的情況。使用量詞應該有助於「{n,}」(n或更多次) –