我正在尝试创建一个接受htmlspecialchars参数的简单方法.虽然我收到PHP通知:
使用未定义的常量ENT_HTML5 - 假设为'ENT_HTML5'
/**
* Encode string.
*
* @param array/string $value
* @param string $param
* @return string
*/
protected function escape($mixed, $params) {
$defaults = array('flags' => ENT_QUOTES | ENT_HTML5, 'charset' => 'UTF-8');
$params = array_merge($defaults, $params);
if (is_array($mixed)) {
foreach($mixed as $key => $value) {
$mixed[$key] = $this->escape($value, $params['flags'], $params['charset']);
}
} elseif (is_string($mixed)) {
$mixed = htmlspecialchars($mixed, $params['flags'], $params['charset']);
}
return $mixed;
}
Run Code Online (Sandbox Code Playgroud)
ENT_QUOTES | ENT_HTML5进入:ENT_QUOTES,我会得到一个不同的错误警告:htmlspecialchars()期望参数2为long,给定字符串
UPDATE
我使用的是PHP 5.3,这就是HTML5错误的原因.如果我 …
我已经多次看过这个问题了,但没有很好的分辨率.我有以下字符串:
$string = "<p>Résumé</p>";
Run Code Online (Sandbox Code Playgroud)
我想打印或回显字符串,但输出将返回<p>R?sum?</p>.所以我尝试htmlspecialchars()或者htmlentities()哪些输出<p>Résumé<p>和浏览器呈现<p>Résumé<p>.显然,我希望它能够呈现:
恢复
而且我使用的是UTF-8:
header("Content-type: text/html; charset=UTF-8");
Run Code Online (Sandbox Code Playgroud)
我在这里错过了什么?为什么回声和打印输出?为任何特殊字符?为了澄清,字符串实际上是存储在数据库中的整个html文件.现实世界的应用不仅仅是一条小线.
我正在做.php RSS生成器,我在尝试从此行中获取数据时遇到问题:
<description><![CDATA[<?=htmlspecialchars(utf8_substr($row['texto'], 0, 100), ENT_QUOTES, 'utf-8') ?>...]]></description>
Run Code Online (Sandbox Code Playgroud)
有些条目显示得很好,有些条目不会返回任何文字......任何关于什么可能出错的想法?
这是所有代码:
<?php
require('php/config.php');
require('php/db.php');
require('php/utils.php');
header("Content-type: application/xml");
$db = new TSQL('SELECT * FROM entradas WHERE estado = 1 ORDER BY fecha DESC LIMIT 20');
if ( $db->executeQuery() ) {
?><?='<?xml version="1.0" encoding="utf-8" ?>' ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Tu Secreto</title>
<link>http://www.tusecreto.com.ar/</link>
<description>TuSecreto / No se lo cuentes a nadie, contaselo a todos</description>
<language>es-ar</language>
<copyright>TuSecreto (C) 2005-<?php print strftime("%Y", time()); ?></copyright>
<lastBuildDate><?=strftime("%a, %d %b %Y %H:%M:%S ", $row['fecha']) ?></lastBuildDate>
<atom:link href="http://www.tusecreto.com.ar/rss.php" rel="self" …Run Code Online (Sandbox Code Playgroud) 假设我有一个刺痛,"a s d d"并将htmlentities其变成
"a s d d".
如何替换(使用preg_replace)而不将其编码为实体?
我试过了preg_replace('/[\xa0]/', '', $string);,但它不起作用.我正试图从我的字符串中删除那些特殊字符,因为我不需要它们
regexp之外的可能性有哪些?
编辑我要解析的字符串:http://pastebin.com/raw/7eNT9sZr
以及preg_replace('/[\r\n]+/', "[##]", $text)
稍后的功能implode("</p><p>", explode("[##]", $text))
我的问题并不完全是"如何"这样做(因为我可以编码实体,删除我不需要的实体和解码实体).但是如何删除只有str_replace或preg_replace的那些.
我对此有点困惑.我一直在阅读htmlspecialchars(),我打算将其用于textareas POST以防止XSS攻击.据我所知,通常htmlspecialchars()用于生成发送到浏览器的HTML输出.但我不确定的是:
1)htmlspecialchars()在将用户输入数据插入MySQL之前使用它是否安全?我已经在使用PDO预处理语句和参数化值来防止SQL注入.
2)或者,我真的不需要担心使用htmlspecialchars()插入值(假设它们是参数化的)并且仅htmlspecialchars()在我从MySQL获取结果并将其显示给用户时使用?
我有一些字符串:
Avery® Laser & Inkjet Self-Adhesive
Run Code Online (Sandbox Code Playgroud)
我需要将它们转换为
Avery Laser & Inkjet Self-Adhesive.
Run Code Online (Sandbox Code Playgroud)
即删除特殊字符并将html特殊字符转换为常规字符.
我怎么能在Ruby上做到这一点?
puts some_method("ò")
# => "ò"
Run Code Online (Sandbox Code Playgroud)
换句话说,将重音字符转换ò为HTML版本:ò
我试过这样的:
# coding: utf-8
require 'rubygems'
require 'htmlentities'
require 'unicode'
coder = HTMLEntities.new
string = "Scròfina"
puts coder.encode(string, :named)
Run Code Online (Sandbox Code Playgroud)
但是我得到了这个(来自:http://htmlentities.rubyforge.org/):
/Library/Ruby/Gems/1.8/gems/htmlentities-4.2.0/lib/htmlentities/encoder.rb:85:in `unpack': malformed UTF-8 character (expected 2 bytes, given 1 bytes) (ArgumentError)
from /Library/Ruby/Gems/1.8/gems/htmlentities-4.2.0/lib/htmlentities/encoder.rb:85:in `encode_decimal'
from (eval):2:in `encode_extended'
from /Library/Ruby/Gems/1.8/gems/htmlentities-4.2.0/lib/htmlentities/encoder.rb:18:in `encode'
from /Library/Ruby/Gems/1.8/gems/htmlentities-4.2.0/lib/htmlentities/encoder.rb:18:in `gsub!'
from /Library/Ruby/Gems/1.8/gems/htmlentities-4.2.0/lib/htmlentities/encoder.rb:18:in `encode'
from /Library/Ruby/Gems/1.8/gems/htmlentities-4.2.0/lib/htmlentities.rb:74:in `encode'
from unicode_pleasure.rb:8
Run Code Online (Sandbox Code Playgroud)
感谢您的时间!
我正在访问的Web服务发送以下响应...
<strong>result</strong>
Run Code Online (Sandbox Code Playgroud)
如何剥离这些编码标签的字符串?
我想将一些html特殊字符发送到文本字段,然后使用javascript将其恢复为原始格式:如果我发送"&pi",它将在文本输入上显示"π",当我使用javascript时得到它,我应该得到"&pi",但我只能得到"π",而不是"&pi".请帮忙,我的代码如下:
<script type="text/javascript">
function qpush(a) {
document.getElementById('input').value += a;
}
function show(a) {
alert(document.getElementById('input').value);
}
</script>
<input type="text" id="input" />
<input type="button" onclick="qpush('π');" value="π" />
<input type="button" onclick="show()" value="go" />
Run Code Online (Sandbox Code Playgroud) html javascript escaping special-characters htmlspecialchars
我有一个php 5.4/ mysql每天5万次点击的网站,有一个Linux服务器上运行nginx和php-fpm.数据库位于单独的服务器上.
我注意到,在高峰时段,我的网络服务器负载最多为15,而四核处理器则为4.我用php xdebug和xhprof描述了我的php应用程序,并看到,90%的CPU工作是由htmlspecialchars()Twig我用来显示数据的模板中的函数完成的.htmlspecialchars()每页有时会有100到1000个电话.我试图减少无法逃避,但仍然无法避免.
有什么方法可以减少htmlspecialchars()功能的CPU使用率吗?也许在PHP中存在某种缓存?还是有另一种方式?