本文目录一览:
- 1、php文件在浏览器中打开有一部分是代码一部分是画面,这是什么原因呀?
- 2、关于php文本域中 html标签转义的问题,望大家帮忙解决看看
- 3、php输出html时转义,该怎么处理
- 4、php json_encode 后, 汉字被转移了
- 5、文章内容所有符号被转义了怎么办
- 6、thinkphp 模型自动转义的html怎么办
php文件在浏览器中打开有一部分是代码一部分是画面,这是什么原因呀?
画面是html代码被浏览器解析了。代码是php代码没有被解析,也就是说你的php服务器配置有问题。不知道你用的是什么服务器 apche还是nginx
关于php文本域中 html标签转义的问题,望大家帮忙解决看看
经本人测试,据我的理解,问题的原因应该不是脚本的问题,你用firebug进行观察会发现,当你传送post的时候,其中的html文本域内容已经进行了编码,但这个编码会在你脚本运行之前进行还原,所以,不会影响你的正则脚本运算。
据我的估计,原因在于:你在输入正则表达式的时候,可能不是太正确。以下是我的测试过程:
运行访问你的脚本,在文本域里将你的脚本源代码粘上,再在正则表达输入框里输入:
%input
type(.*)/%si
你查看网页源代码,其输出结果如下:
preArray
(
[0]
=
Array
(
[0]
=
input
type="submit"
name="button"
value="提交"
/
)
[1]
=
Array
(
[0]
=
="submit"
name="button"
value="提交"
)
)
/pre
说明,还是匹配到了html标签。
而第1个匹配项,在浏览器里会显示为一个html按钮,原因在于这是正规的html语句,所以,浏览器会将这个表现出来。
php输出html时转义,该怎么处理
htmlspecialchars() 函数把预定义的字符转换为 HTML 实体。
语法:
htmlspecialchars(string,flags,character-set,double_encode)
预定义的字符是:
(和号)成为 amp;
" (双引号)成为 quot;
' (单引号)成为 '
(小于)成为 lt;
(大于)成为 gt;
htmlspecialchars_decode() 函数把一些预定义的 HTML 实体转换为字符。
语法:
htmlspecialchars_decode(string,flags)
会被解码的 HTML 实体是:
amp; 解码成 (和号)
quot; 解码成 " (双引号)
' 解码成 ' (单引号)
lt; 解码成 (小于)
gt; 解码成 (大于)
php json_encode 后, 汉字被转移了
属于unicode编码
转换自己做个函数就好!
?php
/**
* 将 %u4F19 转换成如 伙 的 HTML Entity 的形式
*
* @param mixed $str
* @access public
* @return void
*/
function convert_entities($str) {
$str = preg_replace_callback('|%u([a-f0-9]{4})|i',
create_function(
'$matches',
'return \'\' . hexdec($matches[1]) . \';\';'
),
$str
);
return $str;
}
/**
* 把 HTML Entity 转换为原始字符
*
* @param mixed $source
* @access public
* @return void
*/
function utf8encode($source) {
$utf8str = '';
$entities = explode('', $source);
$size = count($entities);
for ($i = 0; $i $size; $i++) {
$foo = $entities[$i];
$nonEntity = strstr($foo, ';');
if ($nonEntity !== false) {
$unicode = intval(substr($foo, 0, (strpos($foo, ';') + 1)));
// determine how many chars are needed to reprsent this unicode char
if ($unicode 128) {
$bar = chr($unicode);
}
else if ($unicode = 128 and $unicode 2048) {
$binVal = str_pad(decbin($unicode), 11, '0', STR_PAD_LEFT);
$binPart1 = substr($binVal, 0, 5);
$binPart2 = substr($binVal, 5);
$char1 = chr(192 + bindec($binPart1));
$char2 = chr(128 + bindec($binPart2));
$bar = $char1 . $char2;
}
else if ($unicode = 2048 and $unicode 65536) {
$binVal = str_pad(decbin ($unicode), 16, '0', STR_PAD_LEFT);
$binPart1 = substr($binVal, 0, 4);
$binPart2 = substr($binVal, 4, 6);
$binPart3 = substr($binVal, 10);
$char1 = chr(224 + bindec($binPart1));
$char2 = chr(128 + bindec($binPart2));
$char3 = chr(128 + bindec($binPart3));
$bar = $char1 . $char2 . $char3;
}
else {
$binVal = str_pad(decbin($unicode), 21, '0', STR_PAD_LEFT);
$binPart1 = substr($binVal, 0, 3);
$binPart2 = substr($binVal, 3, 6);
$binPart3 = substr($binVal, 9, 6);
$binPart4 = substr($binVal, 15);
$char1 = chr(240 + bindec($binPart1));
$char2 = chr(128 + bindec($binPart2));
$char3 = chr(128 + bindec($binPart3));
$char4 = chr(128 + bindec($binPart4));
$bar = $char1 . $char2 . $char3 . $char4;
}
if (strlen($nonEntity) 1) {
$nonEntity = substr($nonEntity, 1); // chop the first char (';')
}
else {
$nonEntity = '';
}
$utf8str .= $bar . $nonEntity;
}
else {
$utf8str .= $foo;
}
}
return $utf8str;
}
$str = '\u662f\u56fd\u5185\u6bbf\u5802\u7ea7\u5316\u5986\u5e08,\u8fd9\u6b21...';
$str=str_replace('\\','%',$str);
$str = convert_entities($str);
header('Content-Type:text/html;charset=utf-8');
print utf8encode($str);
文章内容所有符号被转义了怎么办
Html中特殊字符不被转义,可以使用预格式化标签。
pre 是 Preformatted text(预格式化文本) 的缩写。使用此标签可以把代码中的空格和换行直接显示到页面上。
例如HTML代码:
pre t="code" l="html" pre
if (xx 5) {
print "比5大!\n";
}
/pre
浏览器显示效果:
if (xx 5) {
print "比5大!\n";
}
textarea/textarea之间包含有类似的这种转义字符的时候总会被解析,倒是可以把所有的""通过程序替换成"amp;",但是有些本来就是""的也会被转换,这就错了。如何让textarea/textarea之间包含的文本原封不动的显示出来呢?-phpampnot被转义了
总结如下:
解决方法有两种:
第1种:
pre t="code" l="html"body
textarea id='t' rows=20 cols=20/textarea
script
document.getElementById('t').innerText='a';
/script
/body
第2种:
/*将字串转为html格式*/
pre t="code" l="js" public String strToHtml(String s)
{
if (s==null||s.equals("")) return "";
s = s.replaceAll("", "");
s = s.replaceAll("", "");
s = s.replaceAll("", "");
s = s.replaceAll(" ", " ");
// s = s.replaceAll("/n", "br/");
// s = s.replaceAll("'", "'");
return s;
}
/*将html格式转为字串*/
public String strToHtml(String s)
{
if (s==null||s.equals("")) return "";
s = s.replaceAll("","");
s = s.replaceAll("","");
s = s.replaceAll("","");
s = s.replaceAll(" "," ");
//s = s.replaceAll("br/","/n");
//s = s.replaceAll("'","'");
return s;
}
最后一点:jQuery的()方法默认会转义的,这种情况使用.text()就不会转义了。
thinkphp 模型自动转义的html怎么办
自动转议为html是伪静态的一种,主要用于网站seo,如果需要转换为其它后缀名,可在其配置文件中将'url_html_suffix'设置为php或其它
'url_html_suffix' = 'html',