是否可以使用某种类型的reg表达式或可能完成以下任务的其他类型的代码创建变量?
例如,var test = parta中的数据也可能等于partm。 注意我不想要一个数组...
我在sql搜索中使用它,但我有1000个不同的模型和系列,只想返回某些系列的模型而不返回类似于输入的系列......
是否有某些东西允许第五个字符成为所需字符的列表......?
另一个例子 我有模特
同一系列中的两个型号
515-n的
515米
不同系列的模型 1515
如果我正在搜索515系列,我不想返回1515 ......
请注意,这不是唯一的组合...因此无法将搜索指定为此...需要是通用结果。
答案 0 :(得分:1)
通常,您将使用SQL LIKE语法在数据库中查找信息。我不确定你会使用PHP。如果您要搜索以515开头的所有型号,您可以使用以下内容:
SELECT * FROM `models` WHERE model_name LIKE '515%';
请注意,百分比仅在右侧,因此不会找到1515。
答案 1 :(得分:0)
preg_match('/\b515\b-?(?:n|m)/', $model)
一般地:
preg_match('/\b' . $model_number . '\b-?(?:' . join('|', $array_of_series_letters) . ')/', $model)
答案 2 :(得分:0)
您可以使用SQL通配符来匹配某些模式,但它远不如正则表达式那么灵活。以下是可用的通配符规则:
% A substitute for zero or more characters
_ A substitute for exactly one character
[charlist] Any single character in charlist
[^charlist]
or
[!charlist] Any single character not in charlist
在您的示例中,您可以在SQL WHERE子句中使用以下任何一项:
WHERE model LIKE '515%' <--matches 515 followed by zero or more characters
WHERE model LIKE '515-[nm]' <--matches 515-n and 515-m only
WHERE model LIKE '515%[nm]' <--matches 515n and 515-m, also would match 515Qm
答案 3 :(得分:0)
如果可以,我总是建议避免使用正则表达式。在这种情况下,您可以轻松地获得该模型的模型和有效扩展。你只需要检查字符串是否以所需的模型字符串开头,并以任何一个有效的扩展名结束:
$string = '515-n';
$possibleExtensions = array('-n', 'm');
$model = '515';
$isDesiredModel = strpos($string, $model) === 0 &&
in_array(substr($string, strlen($model)), $possibleExtensions);
答案 4 :(得分:0)
我认为这足以让(几乎)成为现实世界的解决方案:
function isModel($prefix,$input)
{
return preg_match("/^" . $prefix . "\s*-?\s*?[nm]/", $input);
}
一些测试用例:
isModel('5155', '5155n'); // "1"
isModel('515','515-n'); // "1"
isModel('789','789 - m'); // "1"
isModel('111','111 -n'); // "1"