如何使用preg_match从字符串(php)中提取数据?

时间:2012-09-19 08:48:10

标签: php string pattern-matching preg-match

我有一个字符串,

   DXD RO 012345 SMITH JOHN 094 5251 907 REQ 008313 M 

我正在尝试提取电话号码,该电话号码可能包含5到15位数字,但未知空白量。我还需要最后一个字母(性别)和名字。

这样做的确切方法是什么?

2 个答案:

答案 0 :(得分:0)

$subject = "DXD RO 012345 SMITH 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] < / strong>表示相应列( \ s 是空格)

答案 1 :(得分:0)

对于手机您可以尝试:

$subject = "DXD RO 012345 SMITH JOHN 094 5251 907 REQ 008313 M";
preg_match_all("/([0-9]|\s).+{5,15}(\s)/si", $subjectt, $matches);