PHP Regex仅适用于整数

时间:2015-11-02 16:56:42

标签: php regex preg-match

我试图使用REGEX从左边和右边获取$str变量的输入。但我一直把逗号和整数一起拿回来。我只想要整数而不是逗号。我还尝试用[{1}}替换通配符.,但仍无法解决。

\d

3 个答案:

答案 0 :(得分:0)

鉴于你的功能名称,我假设你需要这个用于分页。

以下解决方案可能更容易:

$str = "1,2,3,4,5,6,7,8,9,10";
$str_parts = explode(',', $str);

// reset and end return the first and last element of an array respectively
$start = reset($str_parts);
$end = end($str_parts);

这可以防止你的正则表达式处理你的数字进入两位数。

答案 1 :(得分:0)

我相信您正在寻找Regex Non Capture Group

这就是我的所作所为:

$regStr = "1,2,3,4,5,6";
$regex = "/(\d)(?:,)(4)(?:,)(\d)/";

preg_match($regex, $regStr, $results);
print_r($results);

给我结果:

Array ( [0] => 3,4,5 [1] => 3 [2] => 4 [3] => 5 )

希望这有帮助!

答案 2 :(得分:0)

如何使用CSV解析器?

$str = "1,2,3,4,5,6";
$line = str_getcsv($str);
$target = 4;
foreach($line as $key => $value) {
if($value == $target) {
   echo $line[($key-1)] . '<--low high-->' . $line[($key+1)];
}
}

输出:

3<--low high-->5

或正则表达式可能

$str = "1,2,3,4,5,6";
preg_match('/(\d+),4,(\d+)/', $str, $matches);
echo $matches[1]."<--low high->".$matches[2];     

输出:

3<--low high->5

这些方法的唯一缺陷是数字是范围的开始还是结束。会不会是这样的?