2011-01-19 59 views
9

我有一个非常长的数据阵列,我需要迅速通过它,并确保名称都不超过22个字符。我明白,我可以截断它在显示器方面,但我宁愿有一个妥善的解决办法解决的只是删除它们:)尝试正则表达式超过22个字符的字符串

这一点,这是我的样本

$profiles[257] = array('name'=>'FedupKissingFrogs', 'age'=>27, 'sex'=>'F', 'location'=>'XXXXXXXXXX'); 
$profiles[260] = array('name'=>'Lil_Greta_90', 'age'=>20, 'sex'=>'F', 'location'=>'XXXXXXXXXX'); 
$profiles[262] = array('name'=>'lOOkfOrme86', 'age'=>24, 'sex'=>'F', 'location'=>'XXXXXXXXXX'); 
$profiles[259] = array('name'=>'youvefoundME', 'age'=>21, 'sex'=>'F', 'location'=>'XXXXXXXXXX'); 

这里是正则表达式是我想出了到目前为止,这似乎并没有在所有

'[A-Za-z]{20,40}' 

工作我的计划是,我可以使用正则表达式来标记线,然后我可以从我的IDE中删除。没有编程允许;)

- 编辑 -

感谢您的所有答复!这个想法背后的想法是一个快速和自动化的方式来扫描一个包含数组的平面PHP文件,看看是否所有名称短于22个字符,作为一个比这更长的名称将打破布局,我被要求删除它们。我只想在我的IDE中搜索并删除这些行。

匹配字符并不重要,任何字符都是允许的,甚至是空格,\ /〜和*等。我期待更多匹配字符串的长度,但包含在=>'$name'容器中。

+0

你使用什么语言/框架?当然有内置的东西,可以让你测试一个字符串的长度而不诉诸正则表达式? – LukeH 2011-01-19 12:25:43

+0

@Luke:它似乎不是只是字符串长度问题。 – SilentGhost 2011-01-19 12:26:25

+0

为什么`{20,40}`如果你想要字符串长度<=`22? – 2011-01-19 12:26:47

回答

18

正则表达式是:

/'name'=>'[^']{23,}?'/i 

这将匹配任何行以“名”是23个字符或更长时间。

29

这将匹配“至少22个的任何字符”

.{22,} 
2

使用好醇” strlen我无法抗拒。

foreach ($profiles as $id => $data) { 
    if (strlen($data['name']) >= 22) 
     unset($profiles[$id]); 
} 
-1

此正则表达式匹配的字符串长度超过22个字符

/.{23,}/