我有以下数组:
Array ( [0] => text [1] => texture [2] => beans [3] => )
我想摆脱不包含a-z或a-z与破折号的条目。在本例中,数组项3(仅包含空格)。我该怎么做?
klsxnrf11#
尝试使用:
$input = array( /* your data */ ); function azFilter($var){ return preg_match('/^[a-z-]+$/i', $var); } $output = array_filter($input, 'azFilter');
在PHP 5.3中,也可以简化它:
$input = array( /* your data */ ); $output = array_filter($input, function($var){ return preg_match('/^[a-z-]+$/i', $var); });
n3h0vuf22#
试试看:
<?php $arr = array( 'abc', 'testing-string', 'testing another', 'sdas 213', '2323' ); $tmpArr = array(); foreach($arr as $str){ if(preg_match("/^([-a-z])+$/i", $str)){ $tmpArr[] = $str; } } $arr = $tmpArr; ?>
输出量:
array 0 => string 'abc' (length=3) 1 => string 'testing-string' (length=14)
xzabzqsa3#
对于您在问题中提供的数据,请使用带有空回调参数的array_filter()函数。这将过滤掉所有空元素。
array_filter()
$array = array( ... ); $array = array_filter($array);
如果你需要过滤你在问题文本中描述的元素,那么你需要添加一个回调函数,根据你的需要返回true(有效)或false(无效)。您可能会发现ctype_alpha函数对此很有用。
true
false
ctype_alpha
$array = array( ... ); $array = array_filter($array, 'ctype_alpha');
如果你也需要允许破折号,你需要提供一个自己的函数作为回调函数:
$array = array( ... ); $array = array_filter($array, function($test) {return preg_match('(^[a-zA-Z-]+$)', $test);});
这个示例回调函数使用正则表达式来使用preg_match()函数。正则表达式可以用公式表示一组特定的字符,比如a-z,A-Z和破折号-(减号)。
preg_match()
a-z
A-Z
-
8qgya5xd4#
好吧,你可以简单地循环通过数组。创建一个正则表达式来测试它是否符合你的条件。如果失败,使用unset()来移除所选元素。
q3aa05255#
preg_grep()是PHP使用正则表达式和array_filter()功能的解决方案。该模式匹配由一个或多个字母(不区分大小写)或连字符组成的整个字符串。代码:(Demo)
preg_grep()
var_export( preg_grep('/^[a-z-]+$/i', $array) );
这种方法将保留原始数组键,因此如果您想要一个索引数组,请使用array_values(preg_grep('/^[a-z-]+$/i', $array))。
array_values(preg_grep('/^[a-z-]+$/i', $array))
5条答案
按热度按时间klsxnrf11#
尝试使用:
在PHP 5.3中,也可以简化它:
n3h0vuf22#
试试看:
输出量:
xzabzqsa3#
对于您在问题中提供的数据,请使用带有空回调参数的
array_filter()
函数。这将过滤掉所有空元素。如果你需要过滤你在问题文本中描述的元素,那么你需要添加一个回调函数,根据你的需要返回
true
(有效)或false
(无效)。您可能会发现ctype_alpha
函数对此很有用。如果你也需要允许破折号,你需要提供一个自己的函数作为回调函数:
这个示例回调函数使用正则表达式来使用
preg_match()
函数。正则表达式可以用公式表示一组特定的字符,比如a-z
,A-Z
和破折号-
(减号)。8qgya5xd4#
好吧,你可以简单地循环通过数组。创建一个正则表达式来测试它是否符合你的条件。如果失败,使用unset()来移除所选元素。
q3aa05255#
preg_grep()
是PHP使用正则表达式和array_filter()
功能的解决方案。该模式匹配由一个或多个字母(不区分大小写)或连字符组成的整个字符串。
代码:(Demo)
这种方法将保留原始数组键,因此如果您想要一个索引数组,请使用
array_values(preg_grep('/^[a-z-]+$/i', $array))
。