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 输出换行符回车符相关推荐

  1. Excel数据大量导入MySQL--MySQL数据换行符回车符替换处理

    在Excel中可以大量数据导入MySQL中 首先打开需要导入的表格,然后另存为,选择文本文件(制表符分隔) 得到一个文本文件 然后打开phpmyadmin,执行下面语句(需要自己根据实际情况修改表名) ...

  2. 记事本 删除换行和回车符_如何自定义或删除记事本文本文件的页眉和页脚

    记事本 删除换行和回车符 By default, each Notepad document has the name of the document in the header and the pa ...

  3. C#去除字符串中的换行符回车符空格符等

    MSDN的解释,/n是换行符/r是回车符,文本文件规定:windows底下用/r/n代表换行,而unix下可能只有 /n 另: 生成换行文本时, 需在每行文本后添加"/r/n", ...

  4. Windows、Unix、Mac不同操作系统的换行问题 回车符\r和换行符\n

    一.概念: 换行符'\n'和回车符'\r' (1)换行符就是另起一行  --- '\n' 10 换行(newline) (2)回车符就是回到一行的开头 --- '\r' 13 回车(return) 所 ...

  5. Java 去掉字符串中的换行符回车符等

    去掉一个字符串中的换行符.回车符等,将连续多个空格替换成一个空格 String string = "this just a test" Pattern p = Pattern.co ...

  6. iOS 键盘回车键(换行、回车符)修改

    UITextField 和 UITextView 如图修改键盘 开源地址,可点击查看 UIReturnKeyDefault UIReturnKeyGo UIReturnKeyGoogle UIRetu ...

  7. linux cr换行符,回车符CR和换行符LF

    我在Windows电脑上做开发时,经常会见到这个现象.代码从远程git仓库clone下来后,然后npm install安装依赖后,打开任意一个代码文件会看到每行结尾处有如下报红: 将鼠标指针停留在行尾 ...

  8. 回车键换行符回车符 朦胧中!

    c语言中怎样知道文件中的换行符是<cr>还是<crlf>         回答是:这是一个实现相关的问题.         首先纠正一下你说法中的错误:<cr>是回 ...

  9. Python去掉换行符\回车符

    replace("\n","") replace("\r", "")

最新文章

  1. mysql (双主,互主)
  2. 详解:智能医学影像分析的前沿与挑战 | 硬创公开课
  3. DICOM:标准内容概述
  4. 利刃 MVVMLight 1:MVVMLight介绍以及在项目中的使用
  5. 不同类型社交应用发展分析
  6. fastJson toJSONString注意点
  7. TIME_WAIT和CLOSE_WAIT
  8. 《深入react技术栈》学习笔记(一)初入React世界
  9. Selenium+C#自动化脚本开发学习
  10. Rancher Kubernetes Engine(RKE)正式发布:闪电般的Kubernetes安装部署体验 1
  11. ios笔记-单例文字代码详解
  12. 《设计原本—计算机科学巨匠Frederick P. Brooks的反思》一一第 3 章 理性模型有哪些缺陷...
  13. mc服务器天赋系统,[娱乐|经济]GokiStats——全新的天赋系统插件MySQL可用[全版本]...
  14. 用HTML做一份个人简历
  15. 无线接入回传一体化关键技术及标准化进展
  16. android 信号检测工具,信号检测软件下载-Signal Strength 安卓版v23.0.1-PC6安卓网
  17. 净推荐值NPS(Net Promoter Score)
  18. 什么叫诚实_诚实是人类最珍爱的美德之一,但是什么是诚实?
  19. VMware如何安装windows10教程
  20. 【计算机网络】集线器、网桥、交换机、路由器、网关大解析

热门文章

  1. 用JavaScript在网页编写一个播放器
  2. 带你真正认识Linux 系统结构
  3. php简历github,怎么将个人简历部署在github上?
  4. H5游戏中实现后台和游戏间的切换
  5. HTML5全球普及加速有望终结iOS与安卓界限
  6. 阿迪达斯启用首家VR体验店,开启阿迪达斯VR营销先河
  7. oj网站的训练题(蓝桥杯):交换瓶子
  8. inittab流程解析
  9. 简单几招教你学会ROOT乐视盒子 打开乐视盒子蓝牙
  10. 虚拟机和宿主机实现连接