我的正则表达式foo不是最好的,但以下不起作用,我正在寻找一些建议:
$query = $_GET['indicator'];
// given: 239,240 or 240,239 or 238,239,240
// and: 239, 240 or 240, 239 or 238, 239, 240
// and: 239
// we need to check for start+number+puntuation(1), punctuation+number+end(2), punctuation+number+punctuation(3)
// space+number+end(4), space+number+punctuation(6)
// start+number+end(6)
$sql = 'SELECT * from reports WHERE dataSetIDs REGEXP \'';
$sql .= '^'.$query.'[:punct:]|'; // 1
$sql .= '[:punct:]'.$query.'$|'; // 2
$sql .= '[:punct:]'.$query.'[:punct:]|'; // 3
$sql .= '[:space:]'.$query.'$|'; // 4
$sql .= '[:space:]'.$query.'[:punct:]|'; // 5
$sql .= '^'.$query.'$\''; // 6
$result = mysql_query($sql);
查询正在查看一个特定的单元格,该单元格具有未设置格式的CSV格式的数字集(即逗号之后可能有空格)。我只用一个条目获取行...但不是csv中包含数字的行。
任何指针都非常感激。
干杯,
的Dom
答案 0 :(得分:1)
为什么不爆炸csv?
您可以对数据库中的csv内容和查询输入进行管理:
在开头和结尾添加分隔符:
200,300 => ,200,300,
使用像“,$ id”这样的正则表达式,这更简单
答案 1 :(得分:1)
计时:
$query = mysql_real_escape_string($_GET['indicator']);
$sql = 'SELECT title from reports WHERE dataSetIDs REGEXP \'(^|[:,:]|[: :])'.$query.'([:,:]|[: :]|$)\'';
$result = mysql_query($sql);
感谢您的帮助@VGE。
干杯,
的Dom