2016-11-23 1 views
0

일반적으로 HTML 태그에서 스타일 속성을 제거하려면이 코드를 사용하십시오.PHP img 태그에서만 HTML 태그에서 스타일 속성을 제거하는 방법은 무엇입니까?

$output = preg_replace('/(<[^>]+) style=".*?"/i', '$1', $input); 

그러나, 지금은 단지 IMG 태그에 스타일 HTML 태그에서 속성을 제거 할.

어떻게 할 수 있습니까?

+1

귀하의 경우에는'<'로'<'를 변경하지 않으시겠습니까? 어쨌든 정규식으로 html을 조작하면 항상 오류가 발생하기 쉽고 적절한 xml 파서를 사용해야합니다. – Felk

+0

예를 들어 보여 주시겠습니까? –

답변

1

PHP에서 HTML을 조작해야하는 경우 DOM 파서를 사용하는 것이 더 안전합니다.

$html = <<<DATA 
<body> 
<span style="new">Don't modify it</span> 
<span style="old">Don't modify it</span> 
<img style="Remove-me" src="img.jpg"> 
<img src="img.jpg" title="Don't modify it"> 
</body> 
DATA; 

// Initializing the DOM tree with an HTML string above 
$dom = new DOMDocument('1.0', 'UTF-8'); 
$dom->loadHTML($html, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD); 

$xpath = new DOMXPath($dom); 
$imgs = $xpath->query('//img[@style]'); // Fetch all img tags having style attribute 

foreach($imgs as $img) { 
    $img->removeAttribute('style'); // Remove the style attribute 
} 

echo $dom->saveHTML(); // Show the modified HTML 

PHP demo 참조 : 예를 들어, 여기 특성을 style 속성을 가진 모든 img 태그를 얻을 만 제거 할 수있는 DOMDocument/DOMXPath에 따라 일부 코드입니다.

0

다른 방법으로해야합니다. 스타일을 첫 번째 그룹으로 캡처하고 아무 것도 대체하지 않습니다.

$output = preg_replace('/<\s*img[^<>]+?(style\s*=\s*[\'\"][^\'\"]+[\'\"])/i', '', $input); 
관련 문제