PHP preg_分割,在|处分割,并检查至少3个字符
我想在“|”处分开,并检查长度是否至少为3个字符PHP preg_分割,在|处分割,并检查至少3个字符,php,regex,Php,Regex,我想在“|”处分开,并检查长度是否至少为3个字符 $input_line = "test test | teste test test3 | test test 4" preg_split('/(.\|.)/', $input_line); // Have tried: preg_split('/(.\|.)^[a-z0-9*]{3}$/', $input_line); 有人能帮我吗? 我认为在正则表达式中执行此操作可能不是执行此任务的最佳工具,但如果您想使用它,这里可
$input_line = "test test | teste test test3 | test test 4"
preg_split('/(.\|.)/', $input_line);
// Have tried: preg_split('/(.\|.)^[a-z0-9*]{3}$/', $input_line);
有人能帮我吗?
我认为在正则表达式中执行此操作可能不是执行此任务的最佳工具,但如果您想使用它,这里可能有一种可能性:
(?:^|\|) # start at the start of a line or with a `|`
([^|]{3,}) # before the next '|', make sure it has length >= 3
(?:\||$|\n) # up until the next '|' or '\n' or '$'
尽管如此,我还是认为进行字符串拆分会更好。仅使用
preg\u split
是无法做到这一点的。您可以使用preg\u match
或拆分和筛选:
$result = preg_split('/(\||\n)/', $input_line);
$result = array_filter($result, function($v) { return strlen($v) > 2; });
- 在
上拆分(必须转义)
或\\124;
\n
- 筛选出少于3个字符的字符串
如果填充
的空格不算作字符,则将空格添加到模式/\s(\\\\\124n)\s/
或使用array\u map
或array\u walk
为什么使用正则表达式<代码>分解
就足够了。分割后的每个元素至少需要三个字符长?是的,但我有2到3个可能的字符可以“分解”。“|”和“\n”。如果超过2-3,你是什么意思?也许可以更多。我问你是因为你提到“我想在|处分开,并检查长度至少为3个字符”。我们如何准确地解释它?是的,每个元素应该至少有3个字符。不幸的是,这不是preg\u匹配
,而preg\u分割
是不同的@你说得对。分开后我会检查长度。我也尝试过在preg_分割中覆盖。这个不起作用,请检查链接。