我有一个关于 preg_matches 的小问题,这些正则表达式的东西真的很难理解,我希望有人能给出正确的 awnser!
我有以下文字:
0A-24-423
但这也可以是:
0A-242-2
或者
0A-2-423
如何使用 preg_matches 过滤这些?我正在使用
substr($something, 0,2)
以便它捕获 0A 和
substr($seat, 4,5)
这将捕获 24,但是当您获得 242 时,它不会捕获最后的 2....
希望有人可以帮助在 preg_match 中创建它!
为了更清楚我现在拥有的东西:
foreach($_POST['seats'] AS $seat) {
if ($count > 0) {
$selectQuery .= " || ";
}
$selectQuery .= " ( rowId = '" . substr($seat, 0,2) . "'";
$selectQuery .= " and `order` = " . substr($seat, 3,5) . " ";
$selectQuery .= " and columnId = " . substr($seat, 6) . " ) ";
$count++;
并且 $seat 具有以下格式 XXXXXX 并且使用 substr 我可以获得正确的东西(例如:0J3017)
像这样的事情应该这样做:
$selectQuery = "SELECT * from seats where ";
$count = 0;
$pattern = "I DON'T KNOW :( ";
foreach($_POST['seats'] AS $seat) {
if ($count > 0) {
$selectQuery .= " || ";
}
preg_match($pattern, $seats, $matches);
$selectQuery .= " ( rowId = '" . $matches[0] . "'";
$selectQuery .= " and `order` = " . $matches[1] . " ";
$selectQuery .= " and columnId = " . $matches[2] . " ) ";
$count++;
并且 $seats 在帖子的开头进行了解释(它的格式为XX-XXX-XXX
where the first 2 XX are 0[A-Z] (yes the 0 is correct)
where the 3 first XXX are [0-9]
Where the last 3 XXX are [0-9]
编辑:有两种方法可以解决这个问题。
选项1:
$pattern = "/(.*)-(.*)-(.*)/";
或使用explode() 函数。