Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP preg_分割,在|处分割,并检查至少3个字符_Php_Regex - Fatal编程技术网

PHP preg_分割,在|处分割,并检查至少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); 有人能帮我吗? 我认为在正则表达式中执行此操作可能不是执行此任务的最佳工具,但如果您想使用它,这里可

我想在“|”处分开,并检查长度是否至少为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);
有人能帮我吗?

我认为在正则表达式中执行此操作可能不是执行此任务的最佳工具,但如果您想使用它,这里可能有一种可能性:

(?:^|\|)           # 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_分割中覆盖。这个不起作用,请检查链接。