2012-02-25 3 views
-1

나는 정규 표현식이라고 생각할 수있는 것에 대해 전혀 생각하지 못했다. 이것은 내가 정말로하고 싶어하는 것이다. 나는이 html 태그를 가지고있다.PHP를 사용하여 문자열 내용 바꾸기, 공백을 어떻게 피할 수 있습니까?

<link rel="alternate" type="text/html" href="frenchnew.html" hreflang="fr" lang="fr" title="title"> 

나는 말에이 모든 고통을 교체하려면 : 내가 str_replace() 방법을 사용하고

<link rel="alternate" type="text/html" href="new.html" hreflang="ca" lang="ca" title="new"> 

. 하지만 문제는 검색 문자열에 다음과 같은 속성 사이에 공백이있는 경우입니다. type="text/html"<spance1><spance2><spance3>href="frenchnew.html" 문자열을 찾을 때 어떻게 일치합니까? 정규 표현식 사용? 어떻게해야할지 모르겠다. 되는 것이므로 간격은 전혀 문제가되지 바와 같이 그들은하지 않습니다 ...

$new_link = str_replace(
    array('="frenchnew.html"', '="fr"', ...), 
    array('="new.html"', '="ca"', ...) 
); 

:

답변

1

당신은 그런 교체 맵으로 교체, '지적'할 수 ... 날 좀 도와주세요 변경 될 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. 당신이 언급 한 방법을 사용하여 대체하는 문제가 있기 때문에 나는 한 번에 모든 것을 바꾸고 싶었습니다. 나는 여기서 파일을 읽고 그 파일의 내용을 대체하고있다. 검색 문자열'= "frenchnew.html"과 비슷한 다른 스팅이 있다면 어딘가에도 존재할 수 있습니까? 그것은 또한 대체 될 것입니다 ... – guitarlass

0

다음은 속성 사이의 공백 수에 관계없이 예제에 적용 할 정규 표현식입니다.

$original_string = '<link rel="alternate" type="text/html" href="frenchnew.html" hreflang="fr" lang="fr" title="title">'; 
$pattern = '<link\s+rel="alternate"\s+type="text\/html"\s+href="frenchnew\.html"\s+hreflang="fr"\s+lang="fr"\s+title="title">'; 
$replacement = '<link rel="alternate" type="text/html" href="new.html" hreflang="ca" lang="ca" title="new">'; 

$new_string = preg_replace("/$pattern/", $replacement, $original_string); // Contains your new string 
관련 문제