php explode 实例与教程
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 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
- /**
- * @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);
}
}
php 数组查询
* 查询数组,如果有多个结果返回key数组
* @param array $array 操作的数组
* @param mixed $value 要查询的值
* @return mixed
*/
public static function search(&$array, $value, $field = NULL, $once = false) {
$index = array();
foreach ($array as $key => $arrayValue) {
if ($field) {
if ($arrayValue[$field]==$value) {
$index[] = $key;
if ($once) {
break;
}
}
} else {
if ($value==$arrayValue) {
$index[] = $key;
if ($once) {
break;
}
}
}
}
$indexCount = count($index);
if ($indexCount<1) {
return -1;
} elseif ($indexCount==1) {
return $index[0];
} else {
return $index;
}
}
相关文章
- 今天小编在这里就来给Painter的这一款软件的使用者们来说一说绘制红衣喝酒男水粉画效果的教程,各位想知道具体绘制步骤的使用者,那么下面就快来跟着小编一起看一看教程...2016-09-14
iPhone6怎么激活?两种苹果iPhone6激活教程图文详解
iPhone6新机需要激活后才可以正常使用,那么对于小白用户来说,iPhone6如何激活使用呢?针对此问题,本文就为大家分别介绍Wifi无线网络激活以及iPhone6连接电脑激活这两种有效的方法,希望本文能够帮助到大家...2022-09-14- 今天小编在这里就来给各位photoshop的这一款软件的使用者们来说下制作雨中野外孤独行走的一头牛海报的教程,各位想知道具体制作方法的使用者们,大家就快来看一看小编给...2016-09-14
- 今天小编在这里就来给Painter的这一款软件的使用者们来说一下绘制帅气卡通魔法王子漫画的具体教程,各位想知道绘制步骤的使用者,那么下面就快来跟着小编一起看一看教程...2016-09-14
- 今天小编在这里就来给各位Illustrator的这一款软件的使用者们来说说鼠绘堆雪人的孩童矢量插画的教程,各位想知道具体绘制方法的使用者们,那么各位就快来跟着小编来看看...2016-09-14
- 支付宝支付在国内算是大家了,我们到处都可以使用支付宝了,下文整理介绍的是在安卓app应用中使用支付宝进行支付的开发例子。 之前讲了一篇博客关与支付宝集成获取...2016-09-20
- 今天小编在这里就来给美图秀秀的这一款软件的使用者们来说下究竟该怎么给照片天空加蓝天白云的教程,各位想知道具体制作步骤的,那么下面就来跟着小编一起看看吧。 ...2016-09-14
- 今天小编在这里就来给llustrator的这一款软件的使用者们来说一说绘制扁平化风格卡通警察护士空姐肖像的教程,各位想知道具体绘制步骤的使用者们,那么下面就快来跟着小编...2016-09-14
- 今天小编在这里就来给Illustrator的这一款软件的使用者们来说一下绘制一个方形的录音机图标的教程,各位想知道具体绘制方法的使用者们,那么下面就来看一下小编给大家分...2016-09-14
- 今天小编在这里就来给photoshop的这一款软件的使用者们来说一说简单制作一个搞笑的换脸表情包的教程,各位想知道具体制作方法的使用者们,那么大家就快来看一看教程吧。...2016-09-14
- 今天小编在这里就来给各位photoshop的这一款软件的使用者们来说说给手绘画调色变换场景的后期教程,各位想知道具体后期处理步骤的使用者们,那么大家就快来跟着小编来看...2016-10-02
- 今天小编在这里就来给美图秀秀的这一款软件的使用者们来说一下让你胸丰满起来的处理教程,各位想知道具体处理步骤的,那么下面就快来跟着小编一起看一下教程吧。 给...2016-09-14
- 今天小编在这里就来给Painter的这一款软件的使用者们来说一下绘制雷神传插画的教程,各位想知道具体绘制步骤的使用者,那么下面就快来跟着小编一起看看绘制方法吧。 ...2016-09-14
- 这篇文章主要介绍了源码分析系列之json_encode()如何转化一个对象,对json_encode()感兴趣的同学,可以参考下...2021-04-22
- PHP去除html、css样式、js格式的方法很多,但发现,它们基本都有一个弊端:空格往往清除不了 经过不断的研究,最终找到了一个理想的去除html包括空格css样式、js 的PHP函数。...2013-08-02
- 联合索引又叫复合索引。对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。例如索引是key index (a,b,c). 可以支持a | a,b| a,b,c 3种组合进行查找,但不支持 b,c进...2015-11-24
- 这篇文章主要给大家介绍的是关于Lua语言新手入门的简单教程,文中通过示例代码一步步介绍的非常详细,对各位新手们的入门提供了一个很方便的教程,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。...2020-06-30
- index.php怎么打开?初学者可能不知道如何打开index.php,不会的同学可以参考一下本篇教程 打开编辑:右键->打开方式->经文本方式打开打开运行:首先你要有个支持运行PH...2017-07-06
- 一、下载 mysqlsla [root@localhost tmp]# wget http://hackmysql.com/scripts/mysqlsla-2.03.tar.gz--19:45:45-- http://hackmysql.com/scripts/mysqlsla-2.03.tar.gzResolving hackmysql.com... 64.13.232.157Conn...2015-11-24
- php类的使用实例教程 <?php /** * Class program for yinghua05-2 * designer :songsong */ class Template { var $tpl_vars; var $tpl_path; var $_deb...2016-11-25