任何人都可以帮助我吗? 我正在尝试使用正则表达式编辑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>
如果它们是标签名称的一部分,我想用实体替换所有特殊字符。
例如在quates中,woud不会被替换,但在“egsge”中它们应该是。
我该怎么做?
答案 0 :(得分:1)
您可以使用htmlentities函数将“特殊”字符编码为html实体。
但请记住,您的PHP代码应该创建HTML,尽管您应该完全控制何时对字符串进行编码。
答案 1 :(得分:1)
如果您将所有这些html代码作为单个字符串,请说$ string - 试试这个:
$string = preg_replace_callback('/>(.*)</Us',function($match){return '>'.htmlentities($match[1],ENT_QUOTES,'UTF-8').'<';},$string);
请检查htmlentities的参数,并注意匿名函数的使用仅在PHP 5.3.0之后可用。如果您使用的是早期版本,则只需编写一个命名函数即可获得解决方法。