2011-01-19 2 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'); 

이며, 단지

:)을 제거하는, 적절한 솔루션이 태클 것이라고 이해는 정규식입니다 나는 내 계획은 내가 선을 표시하기 위해 정규식을 사용하여 다음 내 IDE 내에서 삭제할 수있는 모든

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

에서 작동하지 않는, 지금까지 함께 올라와있다. 편집 - - 모든 답변에 대한

감사

) 프로그래밍이 허용되지 않습니다! 이 배후의 아이디어는 배열을 포함하는 플랫 PHP 파일을 스캔하여 22 문자보다 짧은 모든 이름이 이름보다 길면 레이아웃을 손상시킬 수 있는지를 빠르고 자동으로 확인하는 방법이었습니다. 그들을 제거하십시오. 내 IDE에서 검색하고 행을 제거하고 싶었습니다.

문자를 일치시키는 것은 중요하지 않으므로 모든 문자를 허용 할 수 있으며 공백, \/~ 및 * 등도 허용됩니다. 문자열의 길이와 더 일치하지만, =>'$name' 컨테이너에 포함됩니다.

+0

사용중인 언어/프레임 워크는 무엇입니까? 확실하게 정규식에 의지하지 않고 문자열의 길이를 테스트 할 수있는 기본 제공 항목이 있습니까? – LukeH

+0

@ 루크 : 문자열 길이 문제가 아닌 것 같습니다. – SilentGhost

+0

길이가'<='22 인 문자열을 원한다면 왜'{20,40} '입니까? –

답변

18

보다 긴 문자열과 일치하는 것입니다 :

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

이 23 개 문자 인 '이름'어떤 라인을 일치합니다 이상.

+0

빙고! 고마워, 나는 이것을 어딘가에 미래의 사용을 위해 특별 저장할 것이다 :) –

29

이 "적어도 22 개 모든 문자"나는 좋은 팔자 'strlen를 사용하여 저항 할 수 없었다

.{22,} 
+0

파일 크기가 22 자 이상이되면 파일 전체가 일치합니다. – Lazarus

+4

왜? 이거 해봤 니? 그것은 라인별로 일치해야합니다 – vmg

+2

+1 Lazarus의 해결책과는 달리 이것은 잘 작동합니다. – mrt

2

일치합니다.

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

"프로그래밍이 허용되지 않습니다"... – Lazarus

+0

나는 파일을 처리하지 않고있어 평평합니다. 따라서 PHP를 사용하여 배열을 구문 분석 할 수 없습니다.내가 미래의 비슷한 기술을 적용 할 수 있도록 정규식 솔루션을 찾고 있어요 :) –

+0

정규식 더 좋은 방법은 fucntion 대신 – AmerllicA

-1

이 정규식은 정규식 될 것이라고 22 개 문자

/.{23,}/ 
+0

그래서 파일이 22 문자 이상 길면 그러면 전체 파일과 일치합니다. – Lazarus

관련 문제