2011-01-19 14 views
9

Çok uzun bir veri dizisine sahibim ve bunu hızlıca yapmam gerekiyor ve adlarının hiçbiri adının 22 karakterden uzun olmadığından emin olun. Ben ekran tarafta kesmek olabilir, ama yerine Bu benim örnek22 karakterden uzun dizeler için normal ifadeye yeniden girme

$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'); 

Ve sadece

:) bunları kaldırmak yerine, uygun bir çözüm ile bu mücadele ettiklerini biliyoruz regex olduğunu Ben planım ben satırları işaretlemek için normal ifadeler kullanabilirsiniz ve daha sonra benim IDE içinde silebilirsiniz olmasıdır tüm

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

çalışmak görünmüyor hangi şimdiye kadar birlikte geldi. Düzenleme - - bütün yanıtlar için

Teşekkür

); hiçbir programlama yoktur izin verilir! Bunun arkasındaki fikir, bir diziyi içeren düz bir PHP dosyasını taramak için hızlı ve otomatik bir yöntemdi ve 22 karakterden kısa olan tüm adların düzenini keseceğinden daha uzun bir isim olup olmadığını görmek için bir dizi içeriyordu. onları kaldır. Sadece IDE'mi araştırıp satırları kaldırmak istedim.

Karakterleri eşleştirmek önemli değil, karakterlerin izin verilebilir, hatta boşluk, \/~ ve * vb. Dizinin uzunluğunu eşleştirmek için daha çok arıyorum ama =>'$name' kapsayıcısında.

+0

Hangi dil/çerçeve kullanıyorsunuz? Elbette bir regex'e başvurmadan bir ipin uzunluğunu test etmenize izin verecek bir şey var mı? – LukeH

+0

@Luke: sadece dize uzunluğu sorunu gibi görünmüyor. – SilentGhost

+0

Neden {20,40} 'uzunluk dizeleri istiyorsanız <=' 22? –

cevap

18

daha uzun bir dize eşleşir:

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

Bu 23 karakterdir bir 'isim' ile herhangi bir satırla aynı olacak ya da daha uzun.

+0

Bingo! Teşekkürler, bunu gelecek kullanım için özel bir yere saklayacağım :) –

29

Bu "En az 22 herhangi bir karakter" Ben iyi ol' strlen kullanarak direnemedi

.{22,} 
+0

Dosya 22 karakter uzun veya daha uzun sürerse, bu tüm dosyayla eşleşecektir. – Lazarus

+4

Neden? bunu denedin mi Satır başına – vmg

+2

+ 1 ile eşleşmelidir. Lazarus'un çözümünün aksine, bu sadece iyi çalışır. – mrt

2

eşleşir.

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

"Programlamaya izin verilmiyor" dışında ... – Lazarus

+0

Dosyayı işleyemiyorum, düz. Bu yüzden PHP'yi kullanarak diziyi ayrıştırmak mümkün değil.Ben gelecekte benzer bir tekniği uygulamak için izin vermek için bir regex çözüm arıyorum :) –

+0

regex fucntion yerine daha iyi bir yoldur – AmerllicA

-1

Bu regex regex olacağını 22 karakter

/.{23,}/ 
+0

yerine daha iyi bir yol Yani dosya 22 karakter uzun veya daha uzun alır almaz Sonra bu, tüm dosyayla eşleşecek. – Lazarus

İlgili konular