在PHP中删除引号可能有点复杂
我有这样的代码,它带来了img标记的字符串搜索,并将类添加到img标记中。然后我保存所有内容并将其发送到数据库在PHP中删除引号可能有点复杂,php,Php,我有这样的代码,它带来了img标记的字符串搜索,并将类添加到img标记中。然后我保存所有内容并将其发送到数据库 $doc = new DOMDocument(); $doc->loadHTML($article_header); $imgs = $doc->getElementsByTagName('img'); foreach ($imgs as $img) { if($img->getAttribute('class')){ } else {
$doc = new DOMDocument();
$doc->loadHTML($article_header);
$imgs = $doc->getElementsByTagName('img');
foreach ($imgs as $img) {
if($img->getAttribute('class')){
}
else {
$img->setAttribute('class', 'someclass');
$article_header = $doc->saveXml();
}
}
问题是结果会变成这样
<?xml version="1.0" standalone="yes"?> <!DOCTYPE html PUBLIC
"-//W3C//DTD HTML 4.0 Transitional//EN"
"http://www.w3.org/TR/REC-html40/loose.dtd"> <html><body><p><img
src=""some_url/some_pic.jpg""
alt="""" width=""528""
height=""722.0512820512821""
class="someclass"/></p></body></html>
$article_header = stripslashes($doc->saveXml());
但这没用
更新
<img width="\"528\"" height="\"722.0512820512821\"" alt="\"\"" src="%5C%22sources/public/users/103/articles/2011-06-11/3/img/1170x1600.gif%5C%22">
如果我删除mysql\u real\u escape\u字符串一切正常。但新的问题是,如果我这样做了,我应该用什么来代替它来为我的脚本添加一些安全性呢
已解决
我删除了mysql\u real\u escape\u字符串,仅当我将数据传递给mysql时才使用它们我不明白这个问题的原因,但您可以使用
htmlspecialchars\u decode()
将“
转换为”
我不理解此问题的原因,但您可以使用htmlspecialchars\u decode()
将“
转换为”
“嗯,这些“
是”
字符,因此您不能将这些字符删除,因为它们不是“
本身,只是它们的表示形式。您可以执行str\u replace(“,”,“,$string);
,但这不是最好的答案,因为您应该转义”
插入数据库之前,您将得到所需的结果。嗯,这些“
是一个”
字符,因此您不能对这些字符进行条带斜杠,因为它们不是“
本身,只是它们的表示形式。您可以执行str_replace(“,”,$string);
,但这不是最好的答案,因为在插入数据库之前,您应该先转义“
,然后才能得到所需的结果。您的代码应该是:
$doc = new DOMDocument();
$doc->loadHTML($article_header);
$imgs = $doc->getElementsByTagName('img');
foreach ($imgs as $img) {
if(!$img->getAttribute('class')){
$img->setAttribute('class', 'someclass');
}
}
$article_header = $doc->saveXml();
更新:对于下一个问题,当DomDocument解析所有数据时,您使用DomDocument就足够了,如果出现问题,将给出错误
当您想将其保存到mysql时,您需要添加mysql\u real\u escape\u string()
以确保安全性。您的代码应该是:
$doc = new DOMDocument();
$doc->loadHTML($article_header);
$imgs = $doc->getElementsByTagName('img');
foreach ($imgs as $img) {
if(!$img->getAttribute('class')){
$img->setAttribute('class', 'someclass');
}
}
$article_header = $doc->saveXml();
更新:对于下一个问题,当DomDocument解析所有数据时,您使用DomDocument就足够了,如果出现问题,将给出错误
当你想把它保存到mysql时,为了安全,你添加了
mysql\u real\u escape\u string()
。解决了我删除了mysql\u real\u escape\u string,并且只在我向mysql传递数据时才使用它们我怀疑魔法引号与此有关。斜杠也不会。我们需要查看$article\u header
…为什么不能if($img->getAttribute('class')){}否则{/..
不仅仅是if(!$img->getAttribute('class')){/../code>?而且,mysql\u real\u escape\u string
不应该是对文本进行HTML编码的。它应该将“
改为\”
,而不是“
我怀疑魔法引号与此有关。斜杠也不会。我们需要查看$article\u header
…为什么不能if($img->getAttribute('class')){}否则{/…
不仅仅是if(!$img->getAttribute('class')){/…
?另外,mysql\u real\u escape\u string
不应该是对文本进行HTML编码的。它应该将“
转换为”
而不是”
您的代码将不起作用。str\u replace(“”,“\”,$string);
您的代码将不起作用。str;
这不是答案question@RiaD我指出了一个错误…因为每次图像没有类时,他都会保存XML…我猜,$article\u header
只有一个图像没有类,现在可以工作了,但下次就不行了!顺便说一句,我更新了…这不是答案question@RiaD当他扑救时,我指出了一个错误每次图像没有类时使用XML…我猜,$article\u header
只有一个没有类的图像,现在可以工作了,但下次它就不能工作了!顺便说一句,我更新了。。。