0

我基本上在 php 中有一个包含字符串的数组,我基本上需要过滤字符串以获得 9 位 ID 号(用括号括起来),我确定可以使用正则表达式来做到这一点,但我无能为力。

我知道正则表达式将其结果作为数组返回,因为可能有多个结果,但我知道每个字符串不会有多个结果,因此如果可能,我需要将结果直接放入我已经存在的数组中

例子:

function getTasks(){
   //filter string before inserting into array
   $str['task'] = "meeting mike (298124190)";

   return $str;
}
4

4 回答 4

2

通过使用preg_replace你只有一个线路过滤器....

 $str['task'] = preg_replace('/.*\((\d{9})\).*/', '$1', "meeting mike (298124190)");

使用preg_match

$strings = array("meeting mike (298124190)", "meeting mike (298124190)", "meeting mike (298124190)");
foreach ($strings as $string) {
    if (preg_match("|\(([\d]{9})\)|", $string, $matches)) {
        $str[] = $matches[1];
        // OR $str['task'][] = $matches[1];
    }
}
print_r($str);
于 2012-04-28T18:07:22.500 回答
1
<?php
    $str = "meeting mike (298124190)";
    preg_match("/([0-9]{9})/s", $str, $result);

    print_r($result); // $result is an array with the extracted numbers
?>
于 2012-04-28T18:11:21.270 回答
1

好吧,假设它是唯一的一个(用括号括起来的 9 位数字),以下将执行:

preg_match("|\(([0-9]{9})\)|", $str['task'], $matches);
return $matches[1]; //Will contain your ID.
于 2012-04-28T18:11:47.960 回答
1

它类似于:

$str = "meeting mike (298124190)";
$pattern = '/[0-9]{9}/';
if (preg_match($pattern, $str, $matches))
{

    echo $matches[0];
}
于 2012-04-28T18:18:58.300 回答