2011-04-21 7 views
2

preg_match를 사용하여 문자열을 찾고 바꾸는 데 문제가 있습니다. 관심 문자열은 다음과 같습니다.preg_match를 사용하여 문자열 바꾸기

<span style="font-size:0.6em">EXPIRATION DATE: 04/30/2011</span> 

"04/30/2011"날짜를 다른 날짜로 바꾸고 대상을 바꾸어야합니다. 누군가 날 뼈를 던져 수 PHP 정규식을 사용 하여이 패턴과 일치하는 정규 표현식을 줄래? 나는 또한 첫 번째 마감 기간까지 대체하는 방식에서 일치시킬 필요하고, 나중에 코드에서 범위 태그를 폐쇄하지 예 :

<span style="font-size:0.6em">EXPIRATION DATE: 04/30/2011</span><span class="hello"></span> 
내가 정규식에 정통한 아니에요

, 나는 비록 지난 1 시간 동안이 일을하기에 충분한 시간을 보냈고, 나는 완전히 실패했다. 정말 고마워!

편집 : 당신이 볼 수 있듯이 나는 지쳐 버렸다. preg_match가 아니라 preg_replace를 의미했습니다.

답변

4

당신이 교체 후에 경우,

preg_replace('@(\d{2})/(\d{2})/(\d{4})@', '<new date>', $string); 
+0

이것은 완벽하게 작동했다! 브라운 씨 감사합니다. 진지하게 ... 이것은 거대한 도움이된다! – tollmanz

+0

@Sardine : 일반적으로 문제가 해결되면 대답을 "수락"으로 표시하는 것이 좋습니다. –

+0

@Brecht : 감사합니다! 나는 시도했다. 그것은 나를 허락하지 않을 것이다 :(시스템은 내가 4 분 더 기다려야한다고 말했다.) 팁을 주셔서 감사합니다! – tollmanz

1

정규식은 다음과 같아야합니다

당신은 단지 하나 개의 인스턴스를 일치 시키려면
(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)\d\d 

,이 OK입니다. 여러 인스턴스의 경우 preg_match_all을 대신 사용하십시오. http://www.regular-expressions.info/regexbuddy/datemmddyyyy.html에서 가져 왔습니다.

편집 : PHP 스크립트 내에서 검색하고 바꾸기를 원하십니까? 아니면 일부 자바 스크립트 실시간 대체를 원하십니까?

+0

나는 하루와 달 유효성 검사를 좋아하지만 1 년은 조금 제한적이다 (20 일과 21 세기 만) – Phil

3

처럼 preg_replace(), 뭔가를 사용하는 것이이 방법에 대해 :

$toBeFoundPattern = '/([0-9][0-9])\/([0-9][0-9])\/([0-9][0-9][0-9][0-9])/'; 
$toBeReplacedPattern = '$2.$1.$3'; 

$inString = '<span style="font-size:0.6em">EXPIRATION DATE: 04/30/2011</span>'; 

// Will convert from US date format 04/30/2011 to european format 30.04.2011 
echo preg_replace($toBeFoundPattern, $toBeReplacedPattern, $inString); 

및 인쇄

패턴은 항상 시작

EXPIRATION DATE: 30.04.2011 
과 끝 동일한 소위 구분 문자가 사용됩니다. 종종 문자 /가 사용됩니다.

$ 1은 ([0-9] [0-9])와 일치하는 첫 번째 문자열과 일치하는 $ 2 개의 참조가 (...)이고 $ 3이 마지막 (...) 문자와 일치하는 문자열을 참조합니다.).

[...]은 대괄호 안에 나열된 하나의 문자와 일치합니다. 예 : [a-z]는 모두 소문자와 일치합니다.

패턴의 특수한 의미를 사용하려면 문자를 \로 이스케이프 처리하여 문자 그대로 슬래시 문자로 만드십시오.

업데이트 : 아래에서 지적한 바와 같이 {..}을 사용하는 것은 반복되는 패턴의 약식입니다.

+0

패턴 인클로저는 슬래시 이외의 문자가 될 수 있습니다 (내 대답 참조). – Phil

+1

지적 해 주셔서 감사합니다. 내 대답 업데이트 . – SteAp

+0

감사합니다. 경기를 더욱 정확하게 조정하는 데 도움이됩니다! – tollmanz