2011-06-14 7 views
1

IE 필터에있는 4 색 16 진수 코드를 바꾸기 위해 덜 복잡한 PHP 파서를 사용하고 있습니다. 내가하고 싶은 일은 #ff7755 33#ff775533 ie를 대체하는 것입니다. 그 안에있는 모든 공간을 제거하십시오. 분명히 문자는 색상 코드와 다를 수 있습니다. 나는 내가 원하는 것에 매우 가까운 this question을 발견했다.Regex가 문자열의 공백을 대체합니다.

(#([0-9a-f]){6}\s[0-9a-f]{2})

내가 지금 필요한 모든 preg_replace()의 대체 인수에 넣어 정규식은 다음과 같습니다

는 지금, 나는 잘 문자열을 찾아이 정규식이있다.

+0

을 수행 할 수 있습니다 문자열을 찾은 후 정규 문자열을 대체 하시겠습니까? – Randy

+0

그럴 수는 있겠지만 어떻게해야할지 모르겠다. 전체 문자열이 발견/교체 된 비트가 아닌'return'으로 다시 전달되어야하기 때문에. 아니면 내가 너를 오해 했니? – Bojangles

+0

'$ str = preg_replace ("///", "", $ str);'이미 유효한 색상 코드라는 것을 이미 알고 있다면 알 수 있습니다. – NorthGuard

답변

7
preg_replace('/(#[0-9a-f]{6}) ([0-9a-f]{2})/i','$1$2',$yourSource); 
+0

고맙습니다 yes123! 나는 이것을 몇 시간 동안 고민 해왔다. 나는 정규식에 대해 아직 머리를 터뜨릴 수 없다. 젠장. – Bojangles

2

PHP 매뉴얼의 첫 번째 예는 당신이하려고하는 정확하게 될 것 같다 : 물론

<?php 
$string = 'April 15, 2003'; 
$pattern = '/(\w+) (\d+), (\d+)/i'; 
$replacement = '${1}1,$3'; 
echo preg_replace($pattern, $replacement, $string); 
?> 

을 당신이 그것을 것은 : 당신은 그냥

<?php 
$string = '#ff7755 33'; 
$pattern = '/(#[0-9a-f]{6})\s([0-9a-f]{2})/i'; 
$replacement = '${1}$2'; 
echo preg_replace($pattern, $replacement, $string); 
?> 
+0

'$ 1' 대신'$ {1}'을 쓸 필요가 없습니다. 그 외에도 +1. – NikiC

+0

@nikic : PHP 매뉴얼에서 복사하여 붙여 넣기했습니다. 그것이 1을 거기에두고 있었기 때문에 매뉴얼은 그것을 필요로했다. 그리고 그것이 혼자서 떠났던 어떤 해가 없기 때문에. –

+1

당신 말이 맞아요, 당신이 그것을 사용할 수 있습니다. 사람들이 추가 괄호 (또는 여기에 중괄호)를 추가하면 나는 그것을 좋아하지 않습니다. 제 말은'$ var' 대신에'$ { 'var'}'을 쓰는 것이 좋을 수도 있고 때로는 그렇게 할 수도 있지만 일반적으로'$ { 'var'}'(또는'$ {1} ') 나쁜 스타일 :) – NikiC

관련 문제