2013-06-30 3 views
1

html로 전자 메일의 본문을 포함하는 문자열이 있습니다. 그래서 본문 중 하나를 제거해야합니다. 나는 더러운 트릭을 만들었지 만, 나는 더 효율적인 방법을 찾을 수 있다고 생각한다.HTML 문자열 전체 행 제거

<p style="background:white"> 
<span style="font-size:10.0pt;font-family:&quot;Trebuchet MS&quot;,&quot;sans-serif&quot;"> 
    Coût element : 43.19 €. 
    <u></u><u></u> 
</span> 
</p> 

그리고 전체 라인을 제거 할 : 예를 들어

나는 있습니다. 그냥 가격을 제거하고 다음 줄의 첫 글자를 채울 때 중지합니다 (이 경우 "L"). 함수 :

그러나 더 효율적인 방법이 더 깨끗하고 빠르지는 모르겠다. 그리고 만약 $ body에서 text plain으로 작업하는 것이 더 쉬워 진다면, 나는 그것을 어떻게 할 수 있습니까? 참고 : 전자 메일을 다시 보내야하므로 비용을 삭제하고 싶습니다.

희망 누군가가 나를 도와줍니다! 미리 감사드립니다.

+0

돔 파서를 찾습니다. –

+0

humm, 나는했다 : $ doc = new DOMDocument(); $ doc-> loadHTML ($ body); $ body = $ doc-> saveHTML(); 그리고 body를 파일에 저장했고 html 태그가 있습니다. 그리고 나는 웹, strnage 문자를 얻는다 : Ensuite, cliquez sur  "Terminator et livrerÂ". Voici 르 RA © capitulatif 뒤 projet : 그리고 너무 경고 : 경고 : DOMDocument를 :: loadHTML() [domdocument.loadhtml] : 내가 무엇을하고있어 111 즐 즐에서 : ID 13e3df4fad720c7a_ENG 이미 라인, 엔티티에 정의 잘못된? – ganlub

답변

0

드디어 해냈어를 포함하지 않는로 newBody을

$newBody = preg_replace('<!-- __CONDITION_NAME_START__ -->(.|\n)*?<!-- __CONDITION_NAME_END__ -->', '', $body); 

그리고 $ 보내

은 그럼 당신은 그 부분을 제거하는 preg_replace을 사용할 수 있습니다 (이 주석되지 않기 때문에 가격이 표시됩니다) 정규식으로, taht와 같은 것으로 :

$body = preg_replace('#(Translation\s+cost)\s*:\s*\d+(\.\d+)?#u', '$1:', $body); 

그리고 그것은 작동합니다!

1

HTML 메일에서 자리 표시 자 및 조건부 부품에 HTML 주석을 사용하고 싶을 때 사용하는 더러운 트릭입니다.

<p style="background:white"> 
<span style="font-size:10.0pt;font-family:&quot;Trebuchet MS&quot;,&quot;sans-serif&quot;"> 
    Coût element : <!-- __CONDITION_NAME_START__ -->43.19 €.<!-- __CONDITION_NAME_END__ --> 
    <u></u><u></u> 
</span> 
</p> 

을 그리고 한 번 가격이 포함 된 이메일을 보내 : 당신이 보낸 년대 HTML을 제어 할 수있는 경우는 다음과 같이 설정하여 HTML 이메일을 가질 수 있습니다. 이메일은 가격

+0

오, 아주 능숙하고 재치있는 방법입니다! 그러나 나는 이메일을 통제 할 수 없다. 젠장. 트릭을 가져 주셔서 감사합니다. – ganlub