2009-12-09 2 views
0

배열 예제 항목 : 나는 정규식 전문가가 아니에요배열을 감안할 때, 단발 콜론 (&) 앞뒤에있는 공백을 제거하고 다른 여러 공백을 하나의 공백으로 만드는 방법은 무엇입니까?

test:title=Diet Coke 
+0

콜론이 아닌 세미콜론을 의미합니까? –

+0

코드를 추가 할 수 있습니까? –

+0

콜론 앞뒤에 정확히 하나의 공백이 있는지, 예를 들어 앞뒤에 공백이 없을 수 있습니까? –

답변

5

정규 표현식을 사용하는이 방법은 하나의 문자열을 처리하지만, 당신이 배열을 수행하려는 경우, 그냥 배열을 반복하고 각 문자열이 적용

$target="test : title=Diet Coke"; 
print_r(preg_replace('/\s*([\s:])\s*/','\1',$target)); 

출력 :

test:title=Diet Coke 
1

test : title=Diet Coke 

가되고, 그러나 이것은 일반적인 생각이다 :

$my_array = array('test : title=Diet Coke'); 

function do_crazy_thing($string){ 
    $string = preg_replace('/ +/', ' ', $string); 
    $string = preg_replace('/ : /', ':', $string); 
    return $string; 
} 

$my_array = array_map('do_crazy_thing', $my_array); 

이 편집 : 그냥이를 테스트하고있다 잘 작동하는 것 같습니다.

1
foreach ($a as $k=>$v) { 
    $v  = preg_replace("`\s*:\s*`", ":", $v); 
    $a[$k] = preg_replace("`\s*`", " ", $v); 
} 
0

비 정규식 방법,

$string= "test : title=Diet Coke"; 
$s = explode(":",$string); 
$s[0]=trim($s[0]); 
$s[1]=trim($s[1]); 
print implode(":",$s); 
+0

콜론 뒤에 공백을 줄이려면 $ s [1] = trim ($ s [1]); with : $ s [1] = implode ("", array_map ("trim", explode (", $ s [1]))))); 저는 컴퓨터 실습실에 있으며 PHP는 여기에 설치되어 있지 않으므로 실제로 작동하는지는 잘 모르겠지만 잘하면 당신은 그 아이디어를 얻었을 것입니다. – Roman