2011-04-01 2 views
1

HTML을 문자열로 가져 오는 PHP 스크립트가 있습니다. 때때로 BODY 태그의 인라인 너비가 적용된 코드를 가져옵니다. 이 너비가 100 %이면 발생하는 추가 처리 중 일부가 제거됩니다.PHP로 인라인 BODY 너비 덮어 쓰기

외부 스타일을 적용 할 수 있다고 생각하지 않습니다. 인라인 스타일이이를 대체 할 가능성이 높기 때문입니다. 나는 또한 아주 작은 것을 위해 DOM 파서를 사용할 필요가없는 것을 선호한다. 누구든지이 방법을 찾아서 바꿀 수 있습니까?

+1

당신이 정규식과 HTML을 구문 분석하는 경우, ** 안 **. DOM을 대신 사용하십시오. – drudge

+1

그는 구문 분석하지 않고 RegEx를 사용하여 바꿉니다. –

답변

3
preg_replace("#<body(.*?)>#is", "<body>", $html, 1); 

...

$html = "<body style='width:800px;'></body>"; 
echo preg_replace("#<body(.*?)>#is", "<body>", $html, 1); 

...

<body></body> 
+0

이것은 완벽합니다! 나는 그것이 어떻게 작동하는지 전혀 모른다. 고맙습니다! – timroman

+0

'(. *?)'는 0 번 이상 일치하지 않는 것을 의미합니다. 'is'는 공백 문자로 대소 문자를 구분하지 않음을 의미합니다. '(. *?)'는 ''사이의 모든 것입니다. '1'은 단지 1을 대체하는 것을 의미하지만 어쨌든 1 개의 body 태그가 있습니다. 이들은 정규 표현식입니다, 꼭해야합니다 :) –

+0

굉장하고, 정말 고마워요! 내 정규 표현식 경험은 알파 수치로만 제한되어있어이 고급 항목 중 일부를 파악하려고합니다. – timroman