PHP实现html源码中回车换行输出

 在源码中输入换行但是不显示像br 之类的字符我们需要通过php地转义字符来实现了,下文就一起来看看吧。

 
 

知识扩充

 

转移序列 说明
n 换行
r 回车
t 水平制表符
[/td> 反斜线
$ 美元符号
" 双引号
[0-7]{1,3} 此正则表达式序列匹配一个用八进制符号表示的字符
x[0-9A-Fa-f]{1,2} 此正则表达式序列匹配一个用十六进制符号表示的字符

 

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

PHP默认页面编码为HTML,要使输出的内容换行,必须使用HTML的换行标签”<br>”或”<br />”
,当使用PHP做http api时,处理br标签稍显麻烦,此时可以指定PHP页面编码,使”\n”成功解析为换行.

 代码如下 复制代码

<?php
header("Content-type:text/txt; charset=gb2312");
for ($i=0; $i < 100; $i++) { 
    echo "string";  
    echo "\n";
?>

用浏览器访问,会直接显示100行”string”.
也可以将页面编码声明为

 代码如下 复制代码

header("Content-Type: plain/text; charset=gb2312");

此时用浏览器访问,会自动下载为文档,用代码下载没有区别.

txt文件使用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定义字符串的单引号“'”换为双引号“"”就可以了。正确的写法如下:

 代码如下  

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

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

时间: 2024-11-03 22:09:29

PHP实现html源码中回车换行输出的相关文章

用.net Reflector反编译dll 以前源码的回车换行都变成了 \r\n

问题描述 解决方案 解决方案二:这算不错的,修改一下还是比较简单:有时错误很多的,解决方案三:回车换行本来就是这个啊,而且你还放在字符串中

hashmap-请教HashMap源码中的一些问题

问题描述 请教HashMap源码中的一些问题 final Entry getEntry(Object key) { // 获取哈希值 // HashMap将"key为null"的元素存储在table[0]位置,"key不为null"的则调用hash()计算哈希值 int hash = (key == null) ? 0 : hash(key.hashCode()); // 在"该hash值对应的链表"上查找"键值等于key"的

关于hadoop 2.6源码中ApplicationClientProtocol的问题

问题描述 关于hadoop 2.6源码中ApplicationClientProtocol的问题 请教大神一个问题 Hadoop 2.6中,Client端提交JOB到RM端,他们是通过ApplicationClientProtocol通信的. 在RM端有RMClientService.java作为服务端接收请求并相应,代码是rpc.getServer(ApplicationClientProtocol.class...),可以看出服务端对应的协议是ApplicationClientProtoco

android源码中的values-sw580的文件夹

问题描述 android源码中的values-sw580的文件夹 在看android联系人的源码时发现有values-sw580这样的文件夹,不知道这样的文件夹是干嘛的?还有这个文件夹的名字是如何来定义的? 解决方案 res/下文件夹的命名是这样的,名称分为两部分{作用}[-{适用条件}*]如:values/values-land/values-sw600dp/values-sw600dp-land/等, LZ看到的values-sw580dp这个文件夹,首先它里面放的是value,其实,它只有

android 源码中使用System.loadLibrary加载第三方库

问题描述 android 源码中使用System.loadLibrary加载第三方库 我在android源码中编译一个apk,使用了几个第三方库文件,下面是Android.mk文件内容: LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE_TAGS := debug optional eng LOCAL_SRC_FILES := $(call all-java-files-under, src) LOCAL_PACKAGE

simpletree-SimpleTree源码中的展开节点方法,不知道怎么展开到指定的节点,请前段大神指教

问题描述 SimpleTree源码中的展开节点方法,不知道怎么展开到指定的节点,请前段大神指教 我现在要做的是在刷新组织树时,展开到指定的节点,我传了一个pnode(组织树中 的ID),但是不知道展开节点的方法是哪个,不知道在哪里做判断停止展开节点.下面是SimpleTree的js代码. 解决方案 下面是SimpleTree 的JS代码 /* jQuery SimpleTree Drag&Drop plugin Update on 22th May 2008 Version 0.3 * Lice

extjs4-关于 Extjs 4.X中 Ext.Function源码中的一些问题, 关于javascript基础知识的

问题描述 关于 Extjs 4.X中 Ext.Function源码中的一些问题, 关于javascript基础知识的 Ext.Function中定义了如下一个叫做flexSetter的函数,其作用看看就明白 问题在于 其中做a===null判断的地方为什么不用a==null呢? 源码如下: Ext.Function = { /** * A very commonly used method throughout the framework. It acts as a wrapper around

对象-java源码中一个抽象类初始化方法中包含一个super(),该怎么理解

问题描述 java源码中一个抽象类初始化方法中包含一个super(),该怎么理解 package org.apache.http.params; import java.util.Set; /** * Abstract base class for parameter collections. * Type specific setters and getters are mapped to the abstract, * generic getters and setters. * * @si

如何学习android源码中的framework,只有java基础

问题描述 如何学习android源码中的framework,只有java基础 求大神指导,如何学习framework?源码里面东西太多,感觉找不到入口 解决方案 从写android应用软件开始,或者上网收集framework的一些讲解资料,网上特别多 解决方案二: 你怎么学习的java就怎么学习Android 解决方案三: 除了努力還是努力加油 解决方案四: 围绕AMS和WMS展开,Android系统核心就这两个,弄懂了这两个服务如何和应用交互的,基本就了解Android系统的运行原理了. 解决