2011-09-16 5 views
0

동적 XML을 생성하고 있으며 내 서버의 파일에서 lastBuildDate를 업데이트해야합니다. 나는 모든 것을하는 법을 알고 있지만 그것을 바꾸는 법을 안다.preg_match 및 preg_replace 질문

나는 preg_match를 사용하여 표현식을 찾고 preg_replace를 사용하여이를 대체 할 수 있다고 생각했습니다. 내 문자열은 다음과 같습니다.

$build_date = '<lastBuildDate>Fri 16 Sep 2011 2:30:15 -6:00 GMT<lastBuildDate>'; 

태그 내부의 날짜를 찾기 위해 preg_match를 어떻게 사용합니까? 그러면 어떻게 바꿀 수 있습니까? 나는 규칙적인 표현에 관해서는 멍청한 행동이다. 그 문자열 안에 와일드 카드를 찾는 방법을 모르겠습니다.

감사합니다.

+2

XML 파서를 사용하지 않는 이유가 있습니까? –

+2

XML 또는 HTML을 regex로 구문 분석하지 마십시오. http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags 대신 XML 구문 분석기 인 http :// /stackoverflow.com/questions/3577641/best-methods-to-parse-html-with-php –

+0

나는 그것을 몰랐다. 나는 너무 많은 것이 있다는 것을 깨닫지 못했습니다. XML 파서를 사용하겠습니다. 감사. – sehummel

답변

1

preg_matchPCRE syntax 설명서를 읽은 다음 RegExr과 같은 도구를 사용하면 영어 단어로 작성하는 정규식을 설명 할 수 있습니다. 그것은 훌륭한 도구입니다.

+0

http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/ 1732454 # 1732454 –

+2

@downvoter : 데이터가 XML 또는 HTML이 아니고 파일의 스 니펫 일 경우 어떻게해야합니까? 조언은 정규식을 사용하여 XML을 구문 분석하지 않거나 HTML은 훌륭한 조언이지만 모든 상황에 적용 할 수있는 것은 아닙니다. 종교적으로 "악의적 인 것을 사용하지 마라"라는 말을 근거로 게시물을 downvoting하는 것을 중단하십시오. 이 경우 정규식을 사용하여 specificaly를 옹호하지 않았다, 나는 정규식을 사용하는 법을 배우는 방법에 대한 조언을했다. 이런 .... – JRL

0

첫눈에 나는 당신이 당신의 가까운 태그에 '/'을 놓쳤다 고 생각합니다. 내가 하나 있다고 가정합니다.

다른 사람들이 이미 주석 처리 한 것과 마찬가지로 XML 파서를 사용해야합니다.

그러나,이 w/preg_replace이다를 수행하는 방법에 대답, 당신은 는이 작업을 수행 할 수있다 (예를 위해) 날짜 문자열은 단순히입니다

$build_date = "<lastBuildDate>Fri 16 Sep 2011 2:30:15 -6:00 GMT</lastBuildDate>"; 

function replacer($matched) { 
    return "<lastBuildDate>" . strrev($matched) . "</lastBuildDate>"; 
} 

echo preg_replace("/<lastBuildDate>(.*?)<\/lastBuildDate>/me", "replacer('$1')", $build_date); 

이는 XML 태그를 메아리 반대로. 다시 말하지만, 이렇게 표현하는 것에 반대하는 것이 좋습니다.