2011-05-09 39 views
1

任何人都可以幫助我嗎? 我想用正則表達式編輯html代碼。刪除特殊人物如果他們不是標記名稱的一部分

HTML代碼是這樣的:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
    <head> 
     <title></title> 
     <link href="css/style.css" rel="stylesheet" 
     type="text/css" media="screen" /> 
     <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> 
    </head> 
    <body> 
    <div id="wrapper"> 

    <div id="content"> 

    <div class="textArea"> 

    <div class="textLeft"> 

<h2>ökföäa äaf aäpig</h2> 
<p> fkjafkhafkha</p> 
<p>aklfjöl ölafj aljföla</p>  
</div> 

<div class="textCenter"> 

<h2>rueueueu</h2> 
<p> 
eegeg eg<br /> 
eg "egsge"<br /> 
sgesgeg<br /> 
<a href="http://">gsgs sgsey</a> 
</p> 

</div> 
</div> 
</div> 
</div> 
</body> 
</html> 

我woud喜歡實體螺母代替所有的特殊charecters沒有,如果他們是標籤名稱的一部分。

例如在quates中woud不能被替換,但在「egsge」中他們會是。

我該怎麼做?

+0

爲什麼在使用UTF-8時需要這樣做? – Gordon 2011-05-09 09:07:29

回答

1

您可以使用htmlentities函數將您的「特殊」字符編碼爲html實體。

但是請記住,您的php代碼應該創建HTML,並且您應該完全控制何時編碼您的字符串。

1

如果你有這一切的HTML代碼作爲一個字符串,比如$字符串 - 試試這個:

$string = preg_replace_callback('/>(.*)</Us',function($match){return '>'.htmlentities($match[1],ENT_QUOTES,'UTF-8').'<';},$string); 

請檢查參數ヶ輛,並注意使用匿名函數僅僅是因爲可用PHP 5.3.0。如果您使用的是早期版本,則可以簡單地編寫一個命名函數來爲此尋求解決方法。

相關問題