PHP htmlspecialchars 函数
PHP htmlspecialchars 函数
定义和用法
addslashes() 函数在指定的预定义字符前添加反斜杠。
些字符有特殊意义的HTML,并应在HTML实体的代表,如果他们要保持它们的含义。这个函数返回一个与这些转换的一些字符串的;的译本,是那些最有用的日常网络编程。如果您需要的所有HTML字符实体进行翻译,使用ヶ辆()代替。
此功能有助于防止用户提供从含有诸如在留言板或来宾簿应用HTML标记,文本。
在翻译过程为:
'&'(符号)变成'&'
'“'(双引号)变成'”'时ENT_NOQUOTES未设置。
'''(单引号)成为'''只有当ENT_QUOTES设置。
'<“(小于)变成”<'
'>“(大于)变成'>”
字符串
该字符串被转换。
quote_style
可选的第二个参数,quote_style,告诉函数如何处理单,双引号。默认的模式,ENT_COMPAT,是向后兼容的模式,只有99.64双引号字符和叶单引号翻译。如果ENT_QUOTES设置单一和双引号翻译,如果ENT_NOQUOTES既不是单一的,也不设置双引号的翻译。
字符集
定义中使用的字符集的转换。默认字符集是ISO - 8859 - 1。
对于这个功能的目的,标准字符集- 8859 - 1问题,ISO - 8859 - 15,UTF - 8的,cp866,cp1251,cp1252,并KOI8 - R的有效等价,如用htmlspecialchars影响的字符()占用相同这些职位的所有字符集。
以下字符集的支持在PHP 4.3.0及更高版本。
支持的字符集编码别名描述
标准- 8859 - 1 ISO8859 - 1西欧,拉美- 1
标准- 8859 - 15 ISO8859 - 15西欧,拉美9。增加了欧元符号,法国和芬兰在拉丁美洲的信失踪1字符(ISO - 8859 - 1)。
UTF - 8的ASCII兼容多字节8位Unicode。
cp866 ibm866,866 DOS的具体西里尔字符集。这字符集支持4.3.2。
cp1251的Windows - 1251,共赢1251,1251 Windows的具体西里尔字符集。这字符集支持4.3.2。
cp1252的Windows - 1252,1252的Windows西欧特定字符集。
KOI8 - R的koi8茹,koi8r俄罗斯。这字符集支持4.3.2。
繁体版950繁体中文,主要用于台湾。
简体版936简体中文,国家标准字符集。
繁体版,繁体中文字符集的扩展与香港,繁体中文。
Shift_JIS 8859,932日语
EUC - JP的EUCJP日本
注:任何其他字符集无法识别和ISO - 8859 - 1将用来代替。
double_encode
当double_encode关闭PHP将不存在的HTML实体编码打开,默认是把一切。
<?php
$new = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES);
echo $new; // <a href='test'>Test</a>
参考实例
<?php
function get_page($url)
{
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_USERAGENT, 'some bot');
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_REFERER, '-');
curl_setopt($curl, CURLOPT_ENCODING, 'gzip,deflate');
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
...
curl_setopt($curl, CURLOPT_HEADER, 1);
curl_setopt($curl, CURLOPT_NOBODY, 0);
curl_setopt($curl, CURLOPT_TIMEOUT, 10);
$html = curl_exec($curl);
curl_close($curl);
return $html;
}
$text = get_page($url);
$new = htmlspecialchars($text, ENT_QUOTES); // here is the magic :)
echo '<pre>' .$new. '</pre>';
?>
php addslashes
描述
字串相当于自动(字符串$海峡)
返回之前需要在数据库查询等,这些字符是单引号('),双引号引用的字符串反斜杠字符(“),反斜杠()和NUL(空字节)。
定义和用法
addslashes() 函数在指定的预定义字符前添加反斜杠。
这些预定义字符是:
单引号 (')
双引号 (")
反斜杠 ()
NULL
语法
例如一个相当于自动使用()是当您将数据输入数据库。例如,要插入到数据库中的名称赖利,您将需要逃脱。它的高度recommeneded使用数据库管理系统的具体转义函数(比如mysqli_real_escape_string()的MySQL或pg_escape_string()对PostgreSQL),但如果你使用的数据库管理系统简化版,有一个逃生的功能,以及数据库管理系统使用逃跑,你的特殊字符可以使用此功能。这只会进入数据库,额外的数据将不会被插入。具有PHP指令magic_quotes_sybase设置的意思是不是转义为'另一个'。
PHP指令magic_quotes_gpc被默认情况下,它本质上运行addslashes()作用于所有的GET,POST和COOKIE数据。不要使用addslashes()对已经被magic_quotes_gpc设置为您就做双逃跑逃脱字符串。函数get_magic_quotes_gpc()可能会派上用场检查这一点。
注释:默认情况下,PHP 指令 magic_quotes_gpc 为 on,对所有的 GET、POST 和 COOKIE 数据自动运行 addslashes()。不要对已经被 magic_quotes_gpc 转义过的字符串使用 addslashes(),因为这样会导致双层转义。遇到这种情况时可以使用函数 get_magic_quotes_gpc() 进行检测。
报告错误参数
海峡
该字符串转义。
报告错误返回值
返回转义字符串。
报告错误的例子
例子1的addslashes()作用的例子
<?php
$str = "Who's John Adams?";
echo $str . " This is not safe in a database query.<br />";
echo addslashes($str) . " This is safe in a database query.";
?>
Who's John Adams? This is not safe in a database query.
Who's John Adams? This is safe in a database query.
下面来一个我使用递归函数。它处理多维数组
<?php
function as_array(&$arr_r)
{
foreach ($arr_r as &$val) is_array($val) ? as_array($val):$val=addslashes($val);
unset($val);
}
as_array($_POST);
?>
php explode 实例与教程
array explode ( string separator, string string [, int limit] )
separator 必需。规定在哪里分割字符串。
string 必需。要分割的字符串。
limit 可选。规定所返回的数组元素的最大数目。
每个元素都是 string 的一个子串,它们被字符串 separator 作为边界点分割出来。
如果设置了 limit 参数,则返回的数组包含最多 limit 个元素,而最后那个元素将包
含 string 的剩余部分。
如果 separator 为空字符串(""),explode() 将返回 FALSE。如果 separator 所包
含的值在 string 中找不到,那么 explode() 将返回包含 string 单个元素的数组。
在本例中,我们将把字符串分割为数组:
<?php
$str = "Hello world. It's a beautiful day.";
print_r (explode(" ",$str));
?>
Array
(
[0] => Hello
[1] => world.
[2] => It's
[3] => a
[4] => beautiful
[5] => day.
)
实例二
<?php
//利用 explode 函数分割字符串到数组
$source = "hello1,hello2,hello3,hello4,hello5";//按逗号分离字符串
$hello = explode(',',$source);
for($index=0;$index<count($hello);$index++){
echo $hello[$index];echo "</br>";
}
实例三
<?php
$foo = 'uno dos tres'; // two spaces between "dos" and "tres"
print_r(explode(' ', $foo));
?>
Array
(
[0] => uno
[1] => dos
[2] =>
[3] => tres
)
请记住,explode()可以返回,如果分隔立即重复两次(或更多空元素),如以下示
例所示:
PHP implode() 函数实例教程
- <?php
- /**
- * @file class.126http.php
- * 获得126邮箱通讯录列表
- * @author jvones<jvones@gmail.com> http://www.jvones.com/blog
- * @date 2009-09-26
- **/
- class http126
- {
- private function login($username, $password)
- {
- //第一步:初步登陆
- $cookies = array();
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
- curl_setopt($ch, CURLOPT_URL, "https://reg.163.com/logins.jsp?type=1&product=mail126&url=http://entry.mail.126.com/cgi/ntesdoor?hid%3D10010102%26lightweight%3D1%26verifycookie%3D1%26language%3D0%26style%3D-1");
- curl_setopt($ch, CURLOPT_POST, 1);
- curl_setopt($ch, CURLOPT_POSTFIELDS, "username=".$username."@126.com&password=".$password);
- curl_setopt($ch, CURLOPT_COOKIEJAR, COOKIEJAR);
- curl_setopt($ch,CURLOPT_HEADER,1);
- curl_setopt($ch, CURLOPT_TIMEOUT, TIMEOUT);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
- $str = curl_exec($ch);
- //file_put_contents('./126result.txt', $str);
- curl_close($ch);
- //获取redirect_url跳转地址,可以从126result.txt中查看,通过正则在$str返回流中匹配该地址
- preg_match("/replace("(.*?)");/", $str, $mtitle);
- $_url1 = $mtitle[1];
- //file_put_contents('./126resulturl.txt', $redirect_url);
- //第二步:再次跳转到到上面$_url1
- $ch = curl_init($_url1);
- curl_setopt($ch, CURLOPT_TIMEOUT, TIMEOUT);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
- curl_setopt($ch,CURLOPT_COOKIEFILE,COOKIEJAR);
- curl_setopt($ch, CURLOPT_COOKIEJAR, COOKIEJAR);
- curl_setopt($ch,CURLOPT_HEADER,1);
- $str2 = curl_exec($ch);
- curl_close($ch);
- if (strpos($contents, "安全退出") !== false)
- {
- return 0;
- }
- return 1;
- }
- /**
- * 获取邮箱通讯录-地址
- * @param $user
- * @param $password
- * @param $result
- * @return array
- */
- public function getAddressList($username, $password)
- {
- if (!$this->login($username, $password))
- {
- return 0;
- }
- $header = $this->_getheader($username);
- if (!$header['sid'])
- {
- return 0;
- }
- //测试找出sid(很重要)和host
- //file_put_contents('./host.txt', $header['host']);
- //file_put_contents('./sid.txt', $header['sid']);
- //开始进入模拟抓取
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_URL, "http://".$header['host']."/a/s?sid=".$header['sid']."&func=global:sequential");
- curl_setopt($ch, CURLOPT_COOKIEFILE, COOKIEJAR);
- curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/xml"));
- $str = "<?xml version="1.0"?><object><array name="items"><object><string name="func">pab:searchContacts</string><object name="var"><array name="order"><object><string name="field">FN</string><boolean name="ignoreCase">true</boolean></object></array></object></object><object><string name="func">user:getSignatures</string></object><object><string name="func">pab:getAllGroups</string></object></array></object>";
- curl_setopt($ch, CURLOPT_POST, 1);
- curl_setopt($ch, CURLOPT_POSTFIELDS, $str);
- curl_setopt($ch, CURLOPT_TIMEOUT, TIMEOUT);
- ob_start();
- curl_exec($ch);
- $contents = ob_get_contents();
- ob_end_clean();
- curl_close($ch);
- //get mail list from the page information username && emailaddress
- preg_match_all("/<strings*name="EMAIL;PREF">(.*)</string>/Umsi",$contents,$mails);
- preg_match_all("/<strings*name="FN">(.*)</string>/Umsi",$contents,$names);
- $users = array();
- foreach($names[1] as $k=>$user)
- {
- //$user = iconv($user,'utf-8','gb2312');
- $users[$mails[1][$k]] = $user;
- }
- if (!$users)
- {
- return '您的邮箱中尚未有联系人';
- }
- return $users;
- }
- /**
- * Get Header info
- */
- private function _getheader($username)
- {
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_URL, "http://entry.mail.126.com/cgi/ntesdoor?hid=10010102&lightweight=1&verifycookie=1&language=0&style=-1&username=".$username."@126.com");
- curl_setopt($ch, CURLOPT_COOKIEFILE, COOKIEJAR); //当前使用的cookie
- curl_setopt($ch, CURLOPT_COOKIEJAR, COOKIEJAR); //服务器返回的新cookie
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
- curl_setopt($ch, CURLOPT_HEADER, true);
- curl_setopt($ch, CURLOPT_NOBODY, true);
- $content=curl_exec($ch);
- preg_match_all('/Location:s*(.*?)rn/i',$content,$regs);
- $refer = $regs[1][0];
- preg_match_all('/http://(.*?)//i',$refer,$regs);
- $host = $regs[1][0];
- preg_match_all("/sid=(.*)/i",$refer,$regs);
- $sid = $regs[1][0];
- curl_close($ch);
- return array('sid'=>$sid,'refer'=>$refer,'host'=>$host);
- }
- }
- ?>
完整php 文件上传类
class UploadFile {
/**
* 允许的上传文件类型
* @var array $allowFileTypes
* @access private
*/
private $allowFileTypes = array('jpeg','jpg','gif','bmp','png');
/**
* 允许的上传文件大小,单位字节
* @var int $maxFileSize
* @access public
*/
public $maxFileSize = 8388608;
/**
* 构造函数
*/
public function __construct() {
}
/**
* 设置允许的文件类型
* @param mixed $fileTypes 文件类型列表可以是数组和字符串,用“,”号隔开
* @return void
* @access public
*/
public function setAllowFileType($fileTypes) {
if (!is_array($fileTypes)) {
$this->allowFileTypes = explode(',', $fileTypes);
} else {
$this->allowFileTypes = $fileTypes;
}
return;
}
/**
* 上传文件
* @param string $fileField 要上传的文件如$_FILES['file']
* @param string $destFolder 上传的目录,会自动建立
* @param string $fileTypes 上传后文件命名方式0使用原文件名1使用当前时间戳作为文件名
* @return int
* @access public
*/
public function upload($fileField, $destFolder = './', $fileNameType = 1) {
switch ($fileField['error']) {
case UPLOAD_ERR_OK : //其值为 0,没有错误发生,文件上传成功。
$upload_succeed = true;
break;
case UPLOAD_ERR_INI_SIZE : //其值为 1,上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。
case UPLOAD_ERR_FORM_SIZE : //其值为 2,上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。
$errorMsg = '文件上传失败!失败原因:文件大小超出限制!';
$errorCode = -103;
$upload_succeed = false;
break;
case UPLOAD_ERR_PARTIAL : //值:3; 文件只有部分被上传。
$errorMsg = '文件上传失败!失败原因:文件只有部分被上传!';
$errorCode = -101;
$upload_succeed = false;
break;
case UPLOAD_ERR_NO_FILE : //值:4; 没有文件被上传。
$errorMsg = '文件上传失败!失败原因:没有文件被上传!';
$errorCode = -102;
$upload_succeed = false;
break;
case UPLOAD_ERR_NO_TMP_DIR : //其值为 6,找不到临时文件夹。PHP 4.3.10 和 PHP 5.0.3 引进。
$errorMsg = '文件上传失败!失败原因:找不到临时文件夹!';
$errorCode = -102;
$upload_succeed = false;
break;
case UPLOAD_ERR_CANT_WRITE : //其值为 7,文件写入失败。PHP 5.1.0 引进。
$errorMsg = '文件上传失败!失败原因:文件写入失败!';
$errorCode = -102;
$upload_succeed = false;
break;
default : //其它错误
$errorMsg = '文件上传失败!失败原因:其它!';
$errorCode = -100;
$upload_succeed = false;
break;
}
if ($upload_succeed) {
if ($fileField['size']>$this->maxFileSize) {
$errorMsg = '文件上传失败!失败原因:文件大小超出限制!';
$errorCode = -103;
$upload_succeed = false;
}
if ($upload_succeed) {
$fileExt = FileSystem::fileExt($fileField['name']);
if (!in_array(strtolower($fileExt),$this->allowFileTypes)) {
$errorMsg = '文件上传失败!失败原因:文件类型不被允许!';
$errorCode = -104;
$upload_succeed = false;
}
}
}
if ($upload_succeed) {
if (!is_dir($destFolder) && $destFolder!='./' && $destFolder!='../') {
$dirname = '';
$folders = explode('/',$destFolder);
foreach ($folders as $folder) {
$dirname .= $folder . '/';
if ($folder!='' && $folder!='.' && $folder!='..' && !is_dir($dirname)) {
mkdir($dirname);
}
}
chmod($destFolder,0777);
}
switch ($fileNameType) {
case 1:
$fileName = date('YmdHis');
$dot = '.';
$fileFullName = $fileName . $dot . $fileExt;
$i = 0;
//判断是否有重名文件
while (is_file($destFolder . $fileFullName)) {
$fileFullName = $fileName . $i++ . $dot . $fileExt;
}
break;
case 2:
$fileFullName = date('YmdHis');
$i = 0;
//判断是否有重名文件
while (is_file($destFolder . $fileFullName)) {
$fileFullName = $fileFullName . $i++;
}
break;
default:
$fileFullName = $fileField['name'];
break;
}
//die($destFolder . $fileFullName);
$tempfile = str_replace('\\','\',$fileField['tmp_name']);
//$files =
if (move_uploaded_file($tempfile, $destFolder . $fileFullName)) {
return $fileFullName;
} else {
$errorMsg = $destFolder.$fileFullName." 文件上传失败!失败原因:本地文件系统读写权限出错!";
$errorCode = -105;
$upload_succeed = false;
}
}
if (!$upload_succeed) {
throw new Exception($errorMsg,$errorCode);
}
}
相关文章
- eval函数在php中是一个函数并不是系统组件函数,我们在php.ini中的disable_functions是无法禁止它的,因这他不是一个php_function哦。 eval()针对php安全来说具有很...2016-11-25
- 在php中eval是一个函数并且不能直接禁用了,但eval函数又相当的危险了经常会出现一些问题了,今天我们就一起来看看eval函数对数组的操作 例子, <?php $data="array...2016-11-25
Python astype(np.float)函数使用方法解析
这篇文章主要介绍了Python astype(np.float)函数使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-06-08- 这篇文章主要介绍了Python中的imread()函数用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-16
- 本文主要介绍了C# 中取绝对值的函数。具有很好的参考价值。下面跟着小编一起来看下吧...2020-06-25
- 下面小编就为大家带来一篇C#学习笔记- 随机函数Random()的用法详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
- PHP去除html、css样式、js格式的方法很多,但发现,它们基本都有一个弊端:空格往往清除不了 经过不断的研究,最终找到了一个理想的去除html包括空格css样式、js 的PHP函数。...2013-08-02
- CREATE FUNCTION ChangeBigSmall (@ChangeMoney money) RETURNS VarChar(100) AS BEGIN Declare @String1 char(20) Declare @String2 char...2016-11-25
Android开发中findViewById()函数用法与简化
findViewById方法在android开发中是获取页面控件的值了,有没有发现我们一个页面控件多了会反复研究写findViewById呢,下面我们一起来看它的简化方法。 Android中Fin...2016-09-20- 这篇文章主要介绍了C++中Sort函数详细解析,sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变...2022-08-18
- strstr() 函数搜索一个字符串在另一个字符串中的第一次出现。该函数返回字符串的其余部分(从匹配点)。如果未找到所搜索的字符串,则返回 false。语法:strstr(string,search)参数string,必需。规定被搜索的字符串。 参数sea...2013-10-04
PHP函数分享之curl方式取得数据、模拟登陆、POST数据
废话不多说直接上代码复制代码 代码如下:/********************** curl 系列 ***********************///直接通过curl方式取得数据(包含POST、HEADER等)/* * $url: 如果非数组,则为http;如是数组,则为https * $header:...2014-06-07- Foreach 函数(PHP4/PHP5)foreach 语法结构提供了遍历数组的简单方式。foreach 仅能够应用于数组和对象,如果尝试应用于其他数据类型的变量,或者未初始化的变量将发出错误信息。...2013-09-28
- free函数是释放之前某一次malloc函数申请的空间,而且只是释放空间,并不改变指针的值。下面我们就来详细探讨下...2020-04-25
- PHP 函数 strip_tags 提供了从字符串中去除 HTML 和 PHP 标记的功能,该函数尝试返回给定的字符串 str 去除空字符、HTML 和 PHP 标记后的结果。由于 strip_tags() 无法实际验证 HTML,不完整或者破损标签将导致更多的数...2014-05-31
IE6-IE9中tbody的innerHTML不能赋值的解决方法
IE6-IE9中tbody的innerHTML不能赋值,重现代码如下 复制代码 代码如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title>IE6-IE9中tbody的innerHTML不能复制bug</title> </head> <body style="height:3...2014-06-07SQL Server中row_number函数的常见用法示例详解
这篇文章主要给大家介绍了关于SQL Server中row_number函数的常见用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-12-08- 分享一个PHP加密解密的函数,此函数实现了对部分变量值的加密的功能。 加密代码如下: /* *功能:对字符串进行加密处理 *参数一:需要加密的内容 *参数二:密钥 */ function passport_encrypt($str,$key){ //加密函数 srand(...2015-10-30
php的mail函数发送UTF-8编码中文邮件时标题乱码的解决办法
最近遇到一个问题,就是在使用php的mail函数发送utf-8编码的中文邮件时标题出现乱码现象,而邮件正文却是正确的。最初以为是页面编码的问题,发现页面编码utf-8没有问题啊,找了半天原因,最后找到了问题所在。 1.使用 PEAR 的...2015-10-21- 下面小编就为大家带来一篇C#中加载dll并调用其函数的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25