我遇到了一个特定的字符串(它不是完全可打印的,但你可以在下面看到)导致htmlspecialchars()返回一个零长度的字符串.有什么方法可以修复吗?
$Stmnt = 'SELECT subject_name FROM bans WHERE id = 2321';
$Fetch = $Conn->query($Stmnt);
if(!$Fetch)
die('Could not query DB');
while($Row = $Fetch->fetch_array(MYSQLI_ASSOC))
{
$RawName = $Row['subject_name'];
$RawLen = strlen($RawName);
echo('RAW NAME: ['.$RawName.']'.', LENGTH: ['.$RawLen.']'.'<br />');
for($i = 0; $i < $RawLen; $i++)
echo('CHAR '.$i.' = ['.$RawName[$i].'] (ORD: '.ord($RawName[$i]).')<br />');
$CleanName = htmlspecialchars($RawName, ENT_QUOTES, 'UTF-8');
$CleanLen = strlen($CleanName);
echo('CLEAN NAME: ['.$CleanName.']'.', LENGTH: ['.$CleanLen.']'.'<br />');
for($i = 0; $i < $CleanLen; $i++)
echo('CHAR '.$i.' = ['.$CleanName[$i].'] (ORD: '.ord($CleanName[$i]).')<br />');
}
$Fetch->close();
echo('DONE'); …Run Code Online (Sandbox Code Playgroud) 我正在尝试清理一些HTML并删除一个标签(我真的想避免使用nokogiri等).所以我有以下字符串出现我想要摆脱:
<div class="the_class>Some junk here that's different every time</div>
Run Code Online (Sandbox Code Playgroud)
这在我的字符串中只显示一次,我想找到一种方法将其删除.我已经尝试用正则表达式捕获它,但我找不到一个有效的.
我已经尝试过/<div class="the_class">(.*)<\/div>/m,但是它也可以匹配并包含</div>文档中的任何其他标签,这是我不想要的.
关于如何处理这个的任何想法?
如何:签署已清理的HTML?我用它来生成java邮件时清理HTML代码.此代码具有内联图像内容ID <img src=\"cid:image\" height=\"70\" width=\"70\" />.在src清理时,该属性不包含在已清理的html中.
PolicyFactory IMAGES = new HtmlPolicyBuilder().allowUrlProtocols("http", "https")
.allowElements("img")
.allowAttributes("src").matching(Pattern.compile("^cid[:][\\w]+$"))
.onElements("img")
.allowAttributes("border", "height", "width").onElements("img")
.toFactory();
String html = "<img src=\"cid:image\" height=\"70\" width=\"70\" />";
final String sanitized = IMAGES.sanitize(html);
System.out.println(sanitized);
Run Code Online (Sandbox Code Playgroud)
上面代码的输出是:
<img height="70" width="70" />
Run Code Online (Sandbox Code Playgroud) 我正在寻找一个python模块,它将帮助我摆脱HTML标签,但保留文本值.之前我尝试过BeautifulSoup,我无法弄清楚如何完成这个简单的任务.我尝试搜索可以执行此操作的Python模块,但它们似乎都依赖于其他在AppEngine上运行不正常的库.
下面是Ruby的sanitize库中的示例代码,这就是我在Python中所追求的:
require 'rubygems'
require 'sanitize'
html = '<b><a href="http://foo.com/">foo</a></b><img src="http://foo.com/bar.jpg" />'
Sanitize.clean(html) # => 'foo'
Run Code Online (Sandbox Code Playgroud)
谢谢你的建议.
-e
我有一个像这样的mysql语句:
mysql_query("INSERT INTO movies (comments, description, synopsis)
VALUES ('$_POST["comments"]', '$_POST["desc"]',$_POST["synopsis"])");
Run Code Online (Sandbox Code Playgroud)
你可以看到非常简单明了.问题是当我在表单中输入特殊字符时,它不会将数据插入到我的表中(使用phpmyadmin直接检查它是否已插入).例如,如果我在评论textarea这个值:"这是一个评论",如果我改为:"你的名字是什么?:John doe是我的名字"它会中断它.我知道它因为mysql使用了字符......我应该怎么做的任何建议?