我有一個字符串,我如何使用preg_match從字符串(php)中提取數據?
DXD ROSMITH JOHN 094 5251 907 REQ 008313 M
我試圖提取的電話號碼,這可能有5-15個數字,用白色空間的未知量。另外我需要最後一封信(性)和名字。
這樣做的確切pattren是什麼?
我有一個字符串,我如何使用preg_match從字符串(php)中提取數據?
DXD ROSMITH JOHN 094 5251 907 REQ 008313 M
我試圖提取的電話號碼,這可能有5-15個數字,用白色空間的未知量。另外我需要最後一封信(性)和名字。
這樣做的確切pattren是什麼?
$subject = "DXD ROSMITH JOHN 094 5251 907 REQ 008313 M";
$pattern = "/[a-z]+\s+[a-z]+\s+\d+\s+[^\d]+\s*(\d+\s*\d+\s*\d+)\s+[a-z\-]+\s+\d+\s+([a-z])/i";
preg_match($pattern, $subject, $matches);
$ matches [1]包含電話號碼,$ matches [2]包含性別。
爲此,我認爲第1,2,4,5和9列只包含字母,並且只包含3,6,7,8,10個數字(性別必須是字母)。
但是,如果你需要有個數字和字母,只需更換[AZ]或\ d與爲相應列[A-Z0-9](\ S是空白)
對於手機你可以試試:
$subject = "DXD ROSMITH JOHN 094 5251 907 REQ 008313 M";
preg_match_all("/([0-9]|\s).+{5,15}(\s)/si", $subjectt, $matches);
你有自己試過的東西嗎?除非我們能看到這種數據格式的規範,否則沒有一般的答案。給這個特定的文本樣本提供一個特定的正則表達式很容易,但我猜測文本將會發生變化,所以答案可能適用或不適用於您的實際案例。 – deceze
我已經嘗試了一些自己的東西,但由於即時通訊新的與PHP,我失敗了他們所有。我知道我想要做的事情是可能的。 數據格式非常穩定: [word],whitespace,[word],whitespace,[number],whitespace [name(可能包含少量空格)],空格,[phone-number(可能包含空格)], ,[word],空格,[數字],空格,[char] – Roy