PHP fwrite换行写入时换行符不起作用的原因

 更新时间:2016年11月25日 17:36  点击:2335
在做一个百度404错误自动提交文件时发现里面的换行不生效了,那么在PHP fwrite换行写入时换行符不起作用时我们要如何来自呢,具体的来看看吧。

php的换行符我们都知道:\n ,回车符:\r,在需要换行时,通常是用“\r\n”这个组合。但是为什么我们在使用fwrite写入文件时\n换行符不起作用呢。我们先看下面这个例子:

<?php
$filename = 'file.txt';
$word = '你好!\r\n欢迎来到www.111cn.net';
$fh = fopen($filename, "a"); //w从开头写入 a追加写入
echo fwrite($fh, $word);
fclose($fh);
?>
$word的字符串内加上了回车换行符“\r\n”,但是输出结果并不是预期,这个回车换行符“\r\n”并没有被解析为换行符,而是直接被当作一个字符输出来了。

  为什么会出现这样的情况呢?经研究,原来是单双引号惹的祸!我们把$word定义字符串的单引号“'”换为双引号“"”就可以了。正确的写法如下:

$filename = 'file.txt';
$word = "你好!\r\n欢迎来到www.111cn.net";
$fh = fopen($filename, "a"); //w从开头写入 a追加写入
echo fwrite($fh, $word);
fclose($fh);

题外话,上述例子里echo fwrite()显示的一个数字,这个数字表示字符串的长度。

知识扩充

用双引号(")定义字符串,PHP 懂得更多特殊字符的转义序列:

转移序列说明

\n换行

\r回车

\t水平制表符

\[/td>反斜线

\$美元符号

\"双引号

\[0-7]{1,3}此正则表达式序列匹配一个用八进制符号表示的字符

\x[0-9A-Fa-f]{1,2}此正则表达式序列匹配一个用十六进制符号表示的字符

imagettftext可以在图形上写文字了如果是字母的话就没有问题,但如果碰到中文的话上面的文字就是乱码了,下面我们就一起来看看关于PHP的imagettftext方法中文乱码解决办法。

分析:

1、确认gb库是否正确安装?没有报这个方法不存在。
2、imagettftext()必须utf-8编码,php的整个项目都是utf-8编码,所以不用太多考虑。如果不是,可以mb_convert_encoding()转换;
3、检查字体是否加载正确,写死了字体路径,而且换了多个字体(常用的中文字体文件是simsun.ttc和simhei.ttf),还是不行,确认应该不是字体的问题。

然后看到网上有人说:请检查你在编译gd库时是否添加了–enable-gd-jis-conv选项,此选项是为了让gd库支持日文编码的字库,请取消此选项并重新编译。

然后我查看了我的php编译选项,是添加了这个参数,难道要重新编译?
正当我蛋疼的时候,又看到一篇文章:

$str=mb_convert_encoding('汉字', "html-entities", "utf-8"); //转成html编码

例子,具体代码如下(文件格式为gb2312):

<?php
$im = imagecreatefromjpeg('./1.jpg');
$w = imagesx($im);
$h = imagesy($im);
$green = imagecolorallocate($im,50,100,200);
$str = iconv('gb2312','utf-8','幸福就在身边');//解决乱码问题
imagettftext($im,16,0,200,100,$green,'./simhei.ttf',$str);
header("content-type: image/jpeg");
imagejpeg($im);
imagedestroy($im);
?>

例子2

转码方法不复杂,不要紧张。将“我爱你”这几个字粘贴在记事本中,然后另存为utf8格式的文本,也就是unicode utf-8格式,随便起一名字保存,就叫做test.txt吧。下一步:用一个16进制的文本编辑器打开test.txt,你会看到里面的文字格式形如:chr(0xE6)等等,复制这些格式的代码,然后看下面的函数,相信你已经看懂了。

<?php
//在PHP的图形函数中输出“我爱你”
$cur_count=chr(0xE6).chr(0x88).chr(0x91).chr(0xE7).chr(0x88).chr(0xB1).chr(0xE4).chr(0xBD).chr(0xA0).chr(0xEF).chr(0xBC).chr(0x81) ;
Header("Content-type: image/gif");
$im = imagecreate(156,116);
$black = ImageColorAllocate($im, 0,0,0);
$blue = ImageColorAllocate($im, 0,0,255);
$white = ImageColorAllocate($im, 255,255,255);
$yellow = ImageColorAllocate($im, 255,255,0);
ImageTTFText($im,20,0,4,40,$yellow,"simkai.ttf",$cur_count);//我这里选择的本地字体是楷体,必须选择系统字库中存在的字体才行
ImageGif($im);
ImageDestroy($im);
?>

PHP5.4环境下ECSHOP网站报错,这个是版本问题了我们所有cms在使用新版本都会有一个过度阶段了,今天我们来看一篇关于解决PHP5.4环境下ECSHOP网站报错的方法吧,具体如下。


运行Ecshop首页出现报错:出现下面这就话:

Strict Standards: Only variables should be passed by reference in D:\**\includes\cls_template.php on line 406 第406行:$tag_sel = array_shift(explode(‘ ‘, $tag));

解决办法 1 5.3 5.4以上版本的问题,应该也和配置有关 只要406行把这一句拆成两句就没有问题了

$tag_sel = array_shift(explode(' ', $tag));

改成:


$tag_arr = explode(' ', $tag);
$tag_sel = array_shift($tag_arr);

(实验过,绝对可行)因为array_shift的参数是引用传递的,5.3以上默认只能传递具体的变量,而不能通过函数返回值 解决办法 修改完了要记得清理缓存。

2、php5.4环境下安装ECshop出现includes/lib_base.php on line 346的解决方案。

将cls_image.php 中 function gd_version() 改成 static function gd_version() 即可。

3 网站后台验证码不显示PHP Strict Standards: Redefining already defined constructor for class captcha in D:\web\322\includes\cls_captcha.php on line 119

打开 includes/cls_captcha.php

找到下面这段代码


function __construct($folder = '', $width = 145, $height = 20)
{
$this->captcha($folder, $width, $height);
}

将它移到

function captcha($folder = '', $width = 145, $height = 20)

的上边。

php7中有许多的函数与方法已经省掉了如果我们使用的比较旧的cms可能会显示一些函数不可使用了,下面我们来看一篇关于php7跑laravel5.0报错,异常Carbon::createFromFormat()解决办法。


异常

Declaration of Carbon\Carbon::createFromFormat() should be compatible with DateTime::createFromFormat($format, $time, DateTimeZone $object = NULL)
解决:

修改

vendor/nesbot/carbon/src/Carbon/Carbon.php

第380行为:

 public static function createFromFormat($format, $time,DateTimeZone $tz = null)


仅用于php7测试,这样php54是会出错的,所以测完php7还要改回来。

[!--infotagslink--]

相关文章

  • 在img中以双斜杠//开头的URL是有何作用?

    刚来公司上班的时候,看到以前的程序员写的程序里面调用http地址是,不是用http而是用双斜杠//开头,刚开始不知道这样写有什么好处,虽然能够正常浏览,后来在网上找了资料,才发...2016-09-20
  • C#中方括号[]的语法及作用介绍

    C#中方括号[]可用于数组,索引、属性,更重要的是用于外部DLL类库的引用。...2020-06-25
  • Vue中key的作用及原理详解

    本文主要介绍了Vue3中key的作用和工作原理,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-10-13
  • Night Shift是什么意思 Night Shift有什么功能及作用?

    Night Shift是IOS9.3正式版系统新增加的功能之一,很多伙伴们都不清楚Night Shift是什么意思?以及Night Shift有什么用途?对此,本文小编就为大家详细介绍Night Shift的含义及作用...2016-07-04
  • ps高斯模糊在哪 高斯模糊有什么作用

    ps软件是非常受大家喜欢的,有着非常不错的功能。这次文章就给大家介绍下ps高斯模糊在哪?ps高斯模糊有什么作用?感兴趣的下面一起来看看。 高斯模糊就是滤镜选项中,【...2017-07-06
  • PHP fwrite换行写入时换行符不起作用的原因

    在做一个百度404错误自动提交文件时发现里面的换行不生效了,那么在PHP fwrite换行写入时换行符不起作用时我们要如何来自呢,具体的来看看吧。 php的换行符我们都知...2016-11-25
  • 举例分析private的作用(c/c++学习)

    我知道我们可以用 public 中的值,把private中的数据给提出来,但是还是搞不懂private该怎么用,或者说在一个具体程序中,private有什么用...2020-08-20
  • php中各种换行符过滤办法

    在php中默认换代码换行有\\n还有一个就是回车换行了/r/n以及我们的ascii编辑的chr(32) chr(13)分别是回车和空格哦,下面是简单介绍不同系统之间的换行符在php中的用法...2016-11-25
  • git使用.gitignore设置不生效或不起作用

    今天我们为大家分享一篇git使用.gitignore设置不生效或不起作用问题的解决方法,很有参考价值的哦,有兴趣的就来看一看吧。 偶然遇到的问题,记录如下:通常我们在push项...2017-07-06
  • MySQL安装后默认自带数据库的作用详解

    这篇文章主要介绍了MySQL安装后默认自带数据库的作用,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-04-26
  • C语言中static的作用及C语言中使用静态函数有何好处

    在C语言中,static的作用有三条:一是隐藏功能,二是保持持久性功能,三是默认初始化为0。本文重点给大家介绍C语言中static的作用及c语言中使用静态函数有何好处,对本文感兴趣的朋友一起看看吧...2020-04-25
  • Cookie的作用

     1.记录访客的某些信息。例如可以利用Cookie纪录用户光临你的网页次数, 或者访客曾经输入过的信息,某些网站(如网易社区)可以自动纪录你上次登录 的用户名,用的就是Cook...2016-11-25
  • 浅谈mysql数据库中的换行符与textarea中的换行符

    下面小编就为大家带来一篇浅谈mysql数据库中的换行符与textarea中的换行符。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2017-01-22
  • 网站内链到底对排名有没有作用?

    网站内链到底对排名有没有作用?前段时间看到lee发的一篇文章中说内容就是一个内部连接但对于网站排名会很重要了,我们看各大门户网站就知道网站内链的重要性了,下面整理...2016-10-10
  • php换行符号替换与过滤例子

    对于有一些代码或者内容它出现的不是html的换行而是程序中的nr之类的换行了,下面我们一起来看看一个关于php 多个换行变成一个换行或者直接过滤掉例子。 一、直...2016-11-25
  • 一聚教程网-PHP入门教程01:PHP介绍与作用

    为帮助新手们能学会PHP教程,一聚教程网为大家带来了PHP入门教程,将会系统的为大家进行教学,下面是第一节课的内容,了解PHP是什么以及PHP的作用。 在开始学习PHP之前,我...2016-11-25
  • 详解Vuex的属性和作用

    这篇文章主要为大家介绍了Vuex的属性和作用,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助...2021-12-27
  • C++读取到回车换行符问题处理

    有一个程序只需对输入的一行字符一个个进行独立判断,C的话用getchar()就好了,但是用C++的时候发现CIN似乎不接受回车符……搜索解决方法的时候很多人都建议将getline,然后处理数组或者定义一个流什么的,但是这样一行可能很长,要占用很多空间。有没有别的办法?...2020-04-25
  • c++换行符知识点总结

    在本篇文章里小编给大家整理的是关于c++换行符知识点总结,需要的朋友们可以参考学习下。...2020-06-25
  • PHP ord() 函数作用及实例教程

    PHP ord() 函数作用及实例教程 定义和用法 在ord( )函数返回的ASCII值的第一个字符的字符串。 语法 ord(string) ParameterDescriptionstringRequired. The string...2016-11-25