PHP中file_put_contents写入文件的优点

 更新时间:2016年11月25日 14:56  点击:2232
file_put_contents写入文件在我看到的phper中很少用到了,但小编以前做flash接受数据时就用到了file_put_contents函数了,下面我们来看看file_put_contents写入文件的优点

官方介绍

file_put_contents() 函数把一个字符串写入文件中。

与依次调用 fopen(),fwrite() 以及 fclose() 功能一样。

写入方法的比较

先来看看使用 fwrite 是如何写入文件的

$filename   = 'HelloWorld.txt';
$content    = 'Hello World!';
$fh         = fopen($filename, "w");
echo fwrite($fh, $content);
fclose($fh);

再看看使用 file_put_contents 是如何写入文件的

$filename   = 'HelloWorld.txt';
$content    = 'Hello World!';
file_put_contents($filename, $content);

以上我们可以看出,file_put_contents 一行就代替了 fwrite 三行代码,

可见其优点: 简洁、易维护,也不会出现,因 fclose() 忘写的不严密行为。

方法进阶

追加写入

file_put_contents 写入文件时,默认是从头开始写入,如果需要追加内容呢?

在 file_put_contens 方法里,有个参数 FILE_APPEND,这是追加写入文件的声明。

file_put_contents(HelloWorld.txt, 'Hello World!', FILE_APPEND);

锁定文件

在写入文件时,为避免与其它人同时操作,通常会锁定此文件,这就用到了第二个参数: LOCK_EX

file_put_contents(HelloWorld.txt, 'Hello World!', FILE_APPEND|LOCK_EX);

此外,为了确保正确写入,通常会先判断该文件是否可写

if (is_writable('HelloWorld.txt')) {
    file_put_contents(HelloWorld.txt, 'Hello World!', FILE_APPEND|LOCK_EX);
}

PHP中根据IP地址判断所在城市等信息 我们可以使用IP库或直接调用第三方的api接口了,下面我们介绍的是第二种调用淘宝的IP接口了,具体例子如下。


获得IP地址

在 PHP 中得到当前访问者的IP地址,还是比较简单的:

$ip = $_SERVER['REMOTE_ADDR']

上面IP有时获取不到真实IP地址我们可以如下操作


$ip = GetIP();


将IP转换为城市等信息

淘宝提供了一个IP数据接口: http://ip.taobao.com/service/getIpInfo.php?ip=ip地址

$response = file_get_contents('http://ip.taobao.com/service/getIpInfo.php?ip='.$ip);
$result   = json_decode($response);
print_r($result);

输出结果为:

stdClass Object
(
    [code] => 0
    [data] => stdClass Object
        (
            [country] => 中国
            [country_id] => CN
            [area] => 华南
            [area_id] => 800000
            [region] => 广东省
            [region_id] => 440000
            [city] => 深圳市
            [city_id] => 440300
            [county] =>
            [county_id] => -1
            [isp] => 电信
            [isp_id] => 100017
            [ip] => 183.16.191.102
        )
)

 

function GetIP() {
if ($_SERVER["HTTP_X_FORWARDED_FOR"])
$ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
else if ($_SERVER["HTTP_CLIENT_IP"])
$ip = $_SERVER["HTTP_CLIENT_IP"];
else if ($_SERVER["REMOTE_ADDR"])
$ip = $_SERVER["REMOTE_ADDR"];
else if (getenv("HTTP_X_FORWARDED_FOR"))
$ip = getenv("HTTP_X_FORWARDED_FOR");
else if (getenv("HTTP_CLIENT_IP"))
$ip = getenv("HTTP_CLIENT_IP");
else if (getenv("REMOTE_ADDR"))
$ip = getenv("REMOTE_ADDR");
else
$ip = "Unknown";
return $ip;
}
echo GetIP();

COOKIE设置之后一般需要刷新然后页面再可以调用了,但如果需要不刷新页面我们如何来实现呢,下面来看一个简单的例子。


今天遇到了php的cookie必须刷新再生效的问题,可用一下方法解决:

//PHP COOKIE设置函数立即生效,支持数组
function cookie($var, $value = '', $time = 0, $path = '', $domain = '', $s = false)
{
    $_COOKIE[$var] = $value;
    if (is_array($value)) {
        foreach ($value as $k => $v) {
            setcookie($var . '[' . $k . ']', $v, $time, $path, $domain, $s);
        }
    } else {
        setcookie($var, $value, $time, $path, $domain, $s);
    }
}

这样就不用刷新,直接就可以获得cookie的值了,cookie参数详情请看php手册

提示:
其实这段代码中对于cookie及时更新起作用的就是这两句:

$_COOKIE[$var] = $value;
setcookie($var, $value, $time, $path, $domain, $s);

也就是对cookie一次进行了两次赋值

数组去重的方法有很多种有数组有遍历了,我们文章下面会给各位推荐各种关于数组去重的方法 ,希望文章能够帮助到各位朋友。

利用php中的array_flip()函数将一组字符串去重,再用sort()函数进行排序,来实现一些实际的应用效果。

 

源码如下:

<?php
 $strArr = array(
  'www.111cn.net',
  'xiao',
  'rui',
  'xiao',
  'dai',
  'www.111cn.net',
  'hello,friend'
 );
$strArr = array_flip(array_flip($strArr));  //
反转(array_flip()函数:将数组中的键值和值进行反转,如果出现同一值,则最后一个键名将作为它的值,如果原数组中的值的数据类型不是整数或者字符串,函数将会报错。)
 sort($strArr); //排序
 print_r($strArr);
?>

这个例子其实很简单就是数组去重了,在网上有很多的方法 这里只整理了一个希望对各位有用。

星号代替指定数字这个通常用于手机在前面页面显示出来时要隐藏指定几位数字了,具体的方法 我给各位整理了一些希望对大家有帮助。


通过php用三种简单的方法实现手机号中间四位(n位)用星号显示:

$mobile = '13912345678';
//1.字符串截取法
$newMobile1 = substr($mobile, 0, 5).'****'.substr($mobile, 9);
echo $newMobile1.'<br/>';

//2.替换字符串的子串
$newMobile2 = substr_replace($mobile, '****', 5, 4);
echo $newMobile2.'<br/>';

//3.用正则
$newMobile3 = preg_replace('/(\d{5})\d{4}(\d{2})/', '$1****$2', $mobile);
echo $newMobile3;


//方法 四正则

function hidtel($phone){

$IsWhat = preg_match('/(0[0-9]{2,3}[-]?[2-9][0-9]{6,7}[-]?[0-9]?)/i',$phone); //固定电话

if($IsWhat == 1){

return preg_replace('/(0[0-9]{2,3}[-]?[2-9])[0-9]{3,4}([0-9]{3}[-]?[0-9]?)/i','$1****$2',$phone);

}else{

return preg_replace('/(1[358]{1}[0-9])[0-9]{4}([0-9]{4})/i','$1****$2',$phone);

}

}

Method 2:

$num = "13966778888"

$str = substr_replace($num,'****',3,4);

示例:

代码如下:

$phonenum = "13966778888";

echo hidtel($phonenum);

最后输出:139****8888

[!--infotagslink--]

相关文章

  • php读取zip文件(删除文件,提取文件,增加文件)实例

    下面小编来给大家演示几个php操作zip文件的实例,我们可以读取zip包中指定文件与删除zip包中指定文件,下面来给大这介绍一下。 从zip压缩文件中提取文件 代...2016-11-25
  • Jupyter Notebook读取csv文件出现的问题及解决

    这篇文章主要介绍了JupyterNotebook读取csv文件出现的问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2023-01-06
  • php 中file_get_contents超时问题的解决方法

    file_get_contents超时我知道最多的原因就是你机器访问远程机器过慢,导致php脚本超时了,但也有其它很多原因,下面我来总结file_get_contents超时问题的解决方法总结。...2016-11-25
  • php file_get_contents 设置代理抓取页面示例

    file_get_contents函数在php中可以直接打开本地文件也可以直接抓取远程服务器文件,如果简单的采集我们可以使用file_get_contents直接来操作,如果有防采集我们可能需要...2016-11-25
  • Photoshop打开PSD文件空白怎么解决

    有时我们接受或下载到的PSD文件打开是空白的,那么我们要如何来解决这个 问题了,下面一聚教程小伙伴就为各位介绍Photoshop打开PSD文件空白解决办法。 1、如我们打开...2016-09-14
  • 解决python 使用openpyxl读写大文件的坑

    这篇文章主要介绍了解决python 使用openpyxl读写大文件的坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-13
  • C#实现HTTP下载文件的方法

    这篇文章主要介绍了C#实现HTTP下载文件的方法,包括了HTTP通信的创建、本地文件的写入等,非常具有实用价值,需要的朋友可以参考下...2020-06-25
  • SpringBoot实现excel文件生成和下载

    这篇文章主要为大家详细介绍了SpringBoot实现excel文件生成和下载,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-02-09
  • C#操作本地文件及保存文件到数据库的基本方法总结

    C#使用System.IO中的文件操作方法在Windows系统中处理本地文件相当顺手,这里我们还总结了在Oracle中保存文件的方法,嗯,接下来就来看看整理的C#操作本地文件及保存文件到数据库的基本方法总结...2020-06-25
  • php无刷新利用iframe实现页面无刷新上传文件(1/2)

    利用form表单的target属性和iframe 一、上传文件的一个php教程方法。 该方法接受一个$file参数,该参数为从客户端获取的$_files变量,返回重新命名后的文件名,如果上传失...2016-11-25
  • php批量替换内容或指定目录下所有文件内容

    要替换字符串中的内容我们只要利用php相关函数,如strstr,str_replace,正则表达式了,那么我们要替换目录所有文件的内容就需要先遍历目录再打开文件再利用上面讲的函数替...2016-11-25
  • PHP文件上传一些小收获

    又码了一个周末的代码,这次在做一些关于文件上传的东西。(PHP UPLOAD)小有收获项目是一个BT种子列表,用户有权限上传自己的种子,然后配合BT TRACK服务器把种子的信息写出来...2016-11-25
  • 详解Maven profile配置管理及激活profile的几种方式

    这篇文章主要介绍了详解Maven profile配置管理及激活profile的几种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-01-26
  • php报错file_get_contents(): php_network_getaddresses问题

    本文章来为各位介绍一篇关于file_get_contents(): php_network_getaddresses: getaddrinfo failed: Name or service not known...错误解决办法。 昨天,服务器的DN...2016-11-25
  • Zend studio文件注释模板设置方法

    步骤:Window -> PHP -> Editor -> Templates,这里可以设置(增、删、改、导入等)管理你的模板。新建文件注释、函数注释、代码块等模板的实例新建模板,分别输入Name、Description、Patterna)文件注释Name: 3cfileDescriptio...2013-10-04
  • AI源文件转photoshop图像变模糊问题解决教程

    今天小编在这里就来给photoshop的这一款软件的使用者们来说下AI源文件转photoshop图像变模糊问题的解决教程,各位想知道具体解决方法的使用者们,那么下面就快来跟着小编...2016-09-14
  • C++万能库头文件在vs中的安装步骤(图文)

    这篇文章主要介绍了C++万能库头文件在vs中的安装步骤(图文),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-23
  • php文件上传你必须知道的几点

    本篇文章主要说明的是与php文件上传的相关配置的知识点。PHP文件上传功能配置主要涉及php.ini配置文件中的upload_tmp_dir、upload_max_filesize、post_max_size等选项,下面一一说明。打开php.ini配置文件找到File Upl...2015-10-21
  • ant design中upload组件上传大文件,显示进度条进度的实例

    这篇文章主要介绍了ant design中upload组件上传大文件,显示进度条进度的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-10-29
  • C#使用StreamWriter写入文件的方法

    这篇文章主要介绍了C#使用StreamWriter写入文件的方法,涉及C#中StreamWriter类操作文件的相关技巧,需要的朋友可以参考下...2020-06-25