PhpWord 输出换行符回车符
PhpWord textarea换行处理
- 前言
- 软回车
- 硬回车
前言
php小白,若有错误欢迎指正。
之前的项目中有涉及到PhpWord生成,其中获取textarea数据时发现字符串中的换行\n生成docx后不起作用,上网查了之后发现一些答案说使用<w:br/>替换\n就可以换行了。
但实际使用的时候发现,<w:br/>是软回车,软回车实际上并不是真正的回车,无法解决段落首行缩进的问题。
如图所示:
为解决首行缩进2个中文字符,我选择在替换的<w:br/>后添加空格或空格符代码,但若使用WPS打开docx,WPS会自动把一个段落中的空格吞掉,还是无法解决首行缩进。
而docx中,回车分软回车和硬回车两种,我想要的是硬回车,也就是真正另外回车生成为一个新的段落且设置首行缩进。
在网上没有找到PhpWord生成硬回车的答案,于是去研究docx的硬回车代码。
实际上docx的硬回车跟xml文件有关系,将docx后缀改为zip,解压后进入word文件夹,打开document.xml文件,这个文件是文档的实际内容代码,可以看到像html一样,每个段落文本是由标签包起来的,具体的标签可以去查xml的标签样式。
软回车
生成软回车,可以使用str_replace方法将\n替换为<w:br/>
str_replace("\n","<w:br/>", 要替换的字符串);
硬回车
生成硬回车,可以使用str_replace方法将\n替换为你模板中对应的样式标签代码。
// 数据换行处理
$docx_p_start = '<w:p><w:pPr><w:spacing w:line="360" w:lineRule="auto"/><w:ind w:firstLine="480" w:firstLineChars="200"/></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia"/></w:rPr><w:t>';
$docx_p_end = '</w:t></w:r></w:p>';
$replace = str_replace("\n", $docx_p_end.$docx_p_start, $replace);
- <w:p></w:p>:段落标签;
- <w:pPr></w:pPr>:段落属性包在<w:pPr></w:pPr>中;
- <w:spacing w:line=“360” w:lineRule=“auto”/>
<w:ind w:firstLine=“480” w:firstLineChars=“200”/>: 设置段落首行缩进; - <w:r></w:r>:表示一个样式串,包在<w:rPr></w:rPr>的外边;
- <w:rPr><w:rFonts w:hint=“eastAsia”/></w:rPr>:设置段落的字体样式。
- <w:t></w:t>:字符串标签,段落内容就包在这个标签里。
替换方法就是,将docx_p_end字符串对应上模板里变量的段落开始标签<w:p>等,然后在docx_p_end字符串后拼接上docx_p_start字符串。
需要注意的是,docx_p_start字符串并不是固定的,你要根据你想要的段落样式进行对应的修改。
具体怎么修改可以参考WORDXML格式解析,也可以创建一个docx后,写一段话,设置你想要的段落样式后,将文件改为zip文件解压后查看document.xml文件内对应段落的样式代码,然后复制样式代码。
PhpWord 输出换行符回车符相关推荐
- Excel数据大量导入MySQL--MySQL数据换行符回车符替换处理
在Excel中可以大量数据导入MySQL中 首先打开需要导入的表格,然后另存为,选择文本文件(制表符分隔) 得到一个文本文件 然后打开phpmyadmin,执行下面语句(需要自己根据实际情况修改表名) ...
- 记事本 删除换行和回车符_如何自定义或删除记事本文本文件的页眉和页脚
记事本 删除换行和回车符 By default, each Notepad document has the name of the document in the header and the pa ...
- C#去除字符串中的换行符回车符空格符等
MSDN的解释,/n是换行符/r是回车符,文本文件规定:windows底下用/r/n代表换行,而unix下可能只有 /n 另: 生成换行文本时, 需在每行文本后添加"/r/n", ...
- Windows、Unix、Mac不同操作系统的换行问题 回车符\r和换行符\n
一.概念: 换行符'\n'和回车符'\r' (1)换行符就是另起一行 --- '\n' 10 换行(newline) (2)回车符就是回到一行的开头 --- '\r' 13 回车(return) 所 ...
- Java 去掉字符串中的换行符回车符等
去掉一个字符串中的换行符.回车符等,将连续多个空格替换成一个空格 String string = "this just a test" Pattern p = Pattern.co ...
- iOS 键盘回车键(换行、回车符)修改
UITextField 和 UITextView 如图修改键盘 开源地址,可点击查看 UIReturnKeyDefault UIReturnKeyGo UIReturnKeyGoogle UIRetu ...
- linux cr换行符,回车符CR和换行符LF
我在Windows电脑上做开发时,经常会见到这个现象.代码从远程git仓库clone下来后,然后npm install安装依赖后,打开任意一个代码文件会看到每行结尾处有如下报红: 将鼠标指针停留在行尾 ...
- 回车键换行符回车符 朦胧中!
c语言中怎样知道文件中的换行符是<cr>还是<crlf> 回答是:这是一个实现相关的问题. 首先纠正一下你说法中的错误:<cr>是回 ...
- Python去掉换行符\回车符
replace("\n","") replace("\r", "")
最新文章
- mysql (双主,互主)
- 详解:智能医学影像分析的前沿与挑战 | 硬创公开课
- DICOM:标准内容概述
- 利刃 MVVMLight 1:MVVMLight介绍以及在项目中的使用
- 不同类型社交应用发展分析
- fastJson toJSONString注意点
- TIME_WAIT和CLOSE_WAIT
- 《深入react技术栈》学习笔记(一)初入React世界
- Selenium+C#自动化脚本开发学习
- Rancher Kubernetes Engine(RKE)正式发布:闪电般的Kubernetes安装部署体验 1
- ios笔记-单例文字代码详解
- 《设计原本—计算机科学巨匠Frederick P. Brooks的反思》一一第 3 章 理性模型有哪些缺陷...
- mc服务器天赋系统,[娱乐|经济]GokiStats——全新的天赋系统插件MySQL可用[全版本]...
- 用HTML做一份个人简历
- 无线接入回传一体化关键技术及标准化进展
- android 信号检测工具,信号检测软件下载-Signal Strength 安卓版v23.0.1-PC6安卓网
- 净推荐值NPS(Net Promoter Score)
- 什么叫诚实_诚实是人类最珍爱的美德之一,但是什么是诚实?
- VMware如何安装windows10教程
- 【计算机网络】集线器、网桥、交换机、路由器、网关大解析