使用PHP将制表符转换为空格以进行HTML显示?

2024-02-04

我需要在网页中显示一个纯文本文件,其中包含两个空格制表符的数据列。

我所做的是使用 PHP 读取文本文件并将其打印出来<pre>标签使用等宽字体,如下所示:

<pre>
<?php
  $fn="data.txt";
  $fi=fopen($fn, "r");
  $fc=fread($fi, filesize($fn));         //open and read text file
  fclose($fi);
  $fc=str_replace("\t", "  ", $fc);      //replace tabs with two spaces
  print($fc);                            //print data between PRE tags
?>
</pre>

它几乎可以工作,但选项卡很麻烦。用两个空格替换制表符很简单,但随后非空白字符会被推入而不是吸收到制表符中。真正的标签吸收n-1非空白字符(其中n是每个制表符的空格数)。

例如,下表应显示如下:

|   | 43| 43|  7|   |   |
| 12|128|128|128|   | 53|
|  3|  3|  3|  3|   |   |
|   |   | 21| 21| 39|   |

然而盲目更换all带有两个空格的制表符,我们得到:

|    |  43|  43|    7|   |   |
|  12|128|128|128|   | 53|
|   3|   3|   3|   3|   |   |
|   |   |  21|  21|  39|   |

我正在尝试找出一种(相当简单的)方法将制表符转换为空格,同时考虑到不占用完整空间的制表符n spaces.


我前段时间写过这个函数,可能会有所帮助:

function tab2space($line, $tab = 4, $nbsp = FALSE) {
    while (($t = mb_strpos($line,"\t")) !== FALSE) {
        $preTab = $t?mb_substr($line, 0, $t):'';
        $line = $preTab . str_repeat($nbsp?chr(7):' ', $tab-(mb_strlen($preTab)%$tab)) . mb_substr($line, $t+1);
    }
    return  $nbsp?str_replace($nbsp?chr(7):' ', '&nbsp;', $line):$line;
}

它的目的是处理多字节字符串,如果你只有数字,你可以摆脱mb_,它将加速此功能。

[+] 请注意,这适用于一行,因此您需要使用以下命令逐行处理fgets而不是一次整个文件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用PHP将制表符转换为空格以进行HTML显示? 的相关文章

  • 如何在单页应用程序中使用 #-URL?

    本文 http danwebb net 2011 5 28 it is about the hashbangs提出了一个非常令人信服的论点 因为 URL 是长期存在的 它们被添加书签并传递 所以它们应该是有意义的 并且使用哈希进行真正的路由
  • mysql_fetch_array while 循环。它是如何工作的?

    我已经阅读了 php net 上的该函数 但这仍然没有回答我的问题 我对 C 语言有一定的了解 并且刚刚开始使用 php 通常在 C 中 如果要执行 while 循环 则需要有一些条件来将循环推进到不再有效的点 如下所示 while x g
  • 刷新页面后保留输入值

    我有一个带有输入字段的表单 该输入包含一个下拉菜单 从数据库中读取信息 如果用户输入值 并且当他到达下拉菜单时 他没有找到他想要的内容 他会转到另一个页面将此信息添加到下拉菜单 然后转到第一页继续输入信息 如果他转到另一个页面向下拉菜单添加
  • SMTP:无法连接套接字:无法找到套接字传输“ssl”

    我一直在尝试在 WAMP 上使用 Pear 发送电子邮件通过 GMail 花了几个小时将其全部设置并找出我遇到的所有错误后 我以为我已经很接近了 直到我开始收到此错误 Failed to connect to ssl smtp gmail
  • Opera 中 margin-bottom 的计算方式不同

    我有一个具有相对位置的 div 和一个具有绝对位置的子 div div class out div div div CSS container width 100px height 100px position relative insid
  • Laravel - 动态更改电子邮件设置不起作用

    我的应用程序的所有电子邮件设置都存储在数据库中 用户可以选择更改这些设置 而且一切都很好 但我正在尝试设置 发送测试电子邮件 功能 以允许用户在保存设置之前测试其设置 当他们提交发送测试电子邮件的表单时 电子邮件将通过原始设置而不是新设置发
  • 从 XML 获取 viewCount [重复]

    这个问题在这里已经有答案了 我目前正在使用YouTube API https developers google com youtube 来自 Google 我正在尝试获取 viewCount 数组 我已经尝试过这个 但一点运气都没有 He
  • 在数据转换之前应用验证

    我想将从提交的用户数据中获得的文本字段转换为 Symfony2 中的对象 我使用 DataTransformer 来做到这一点 当我使用 NotEmpty 或 NotNull 等内置验证器或任何以标准方式内置的自定义验证器时 Symfony
  • 如何在 PHP 中制作简短的随机唯一密钥,例如 YouTube 视频 ID? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 有没有办法创建像 YouTube 视频网址中使用的唯一密钥 例如 https www youtube com watch v nWCh
  • PHP strtotime +1 个月添加额外一个月[重复]

    这个问题在这里已经有答案了 我有一个简单的变量 可以将今天添加一个月 endOfCycle date Y m strtotime 1 month 今天是 2013 年 1 月 所以我希望返回 2013 02 但我得到的是 2013 03 我
  • Mysql为简单频繁查询创建排序索引性能

    我正在处理一个包含大约 400 万条消息条目的 mysql 表 并尝试根据时间戳选择最新的 50 条消息 另一个要求是返回的消息不以固定前缀开头 问题是单个查询大约占用 25 的 cpu 并且最多需要 1 5 秒 该查询经常由多个客户端执行
  • 如何在引导程序中制作两个等高的列?

    我有这个代码 HTML div class container fluid div class row div class col md 6 p Line p p Line p p Line p p Line p p Line p p Li
  • 解码Json数据数组并插入到mysql

    这个问题可能已经在这里问过 但我尝试搜索找不到它 我有如下 Json 数据 CityInfo CityCode 5599 Name DRUSKININKAI CityCode 2003 Name KAUNAS CityCode 2573 N
  • 检查外部图像是否存在的正确 PHP 方法?

    我知道至少有 10 个相同的问题有答案 但似乎没有一个对我来说完美无缺 我正在尝试检查内部或外部图像是否存在 图像 URL 是否有效 fopen url r 失败 除非我使用 fopen Warning fopen http example
  • 电子邮件模板中的剪贴板功能

    我想在电子邮件模板中发送优惠券代码 一个小按钮 用于复制剪贴板上输入元素的内容 通过电子邮件模板 我的意思是我想发送一封电子邮件 其中包含优惠券代码 并且电子邮件模板中会有一个按钮 允许我将其复制到剪贴板 这可以做到吗 任何帮助将不胜感激
  • Symfony错误在链配置的命名空间XXX中找不到类XXX

    关于这个主题已经有一些其他问题 但没有一个真正有帮助 我是 Symfony 的新手 所以很难理解它 我在文件 Client IntranetBundle LDAP LDAPAuthenticationProvider php 中 此代码导致
  • PHP - 递归搜索数组中的键和子键,成功时返回键['subkey]

    因此 我编写了一个函数 该函数可以在数组中深入搜索两个级别以查找键和子键对 基本上是在寻找key subkey 如果找到 则返回key subkey 我正在寻找一种以真正递归的方式执行此操作的方法 并根据需要进行尽可能多的深度搜索 直到到达
  • 从函数在 python 3 中创建全局变量

    我想知道为什么在函数结束后我无法访问变量 variable for raw data 代码是这样的 def htmlfrom Website URL import urllib request response urllib request
  • 使用 FormData 上传 JavaScript Blob

    我在将 javascript 创建的 blob 上传到我的服务器时遇到问题 基本思想是用户上传图像 在 javascript 中我对图像进行居中裁剪并在传输之前对其进行下采样 图像处理工作正常 但上传本身无法正常工作 这是执行从 canva
  • FOSRestBundle:显示我的自定义异常消息

    我试图在 FOSRestBundle 中添加异常的自定义控制 但它似乎忽略了我的自定义消息 响应的状态代码正常 I have throw new HttpException 404 User id not found 但得到这个 json

随机推荐

  • ASP.NET 站点地图,有多重要?

    我的网站已经完成了 至少我是这么想的 我没有站点地图 奇迹般地我错过了站点地图的整个概念 甚至不知道它是一件事 我想我要向我的计算机老师大喊一声 我一直在阅读它 动态生成站点地图似乎相当复杂 我必须这样做 因为我的页面基本上只是一个使用参数
  • WPF:如何创建自定义项目控制面板?

    我想设计一个自定义项目控制面板ListBox 有3个要求 It should have the properties int rows and int columns which would define the matrix of cel
  • 设置 DOWNLOAD_DELAY 时 scrapy CONCURRENT_REQUESTS 被忽略?

    查看 scrapy 统计数据 Crawled X pages at X pages min 在我看来 一旦 例如 DOWNLOAD DELAY 4 5 设置后 请求将变为连续的 无论什么CONCURRENT REQUESTS塞特林群岛 根据
  • 如何读取匿名类型的属性?

    我有一个返回的方法 return new System Web Mvc JsonResult Data new Status OK 我需要编写一个单元测试来验证这一点jsonResult Data status OK 如何读取状态属性 更新
  • couchDB 中的链式映射/归约

    在 couchDB 中 我有一组如下所示的项目 为了示例而简化 id 1 date Jul 1 user user1 id 2 date Jul 2 user user1 id 3 date Jul 3 user user2 etc 我想获
  • 实体框架修改分离对象

    我有一些困惑 源于此http msdn microsoft com en us library vstudio bb896248 v vs 100 aspx http msdn microsoft com en us library vst
  • Laravel 检查用户电子邮件是否已验证

    您好 我想检查用户电子邮件是否仅在控制器中的一个功能中进行验证 我不想在中间件或路径中设置检查 如下所示 public function construct this gt middleware verified 因为控制器可供访客访问 所
  • 没有分支或移位的绝对值,只有加/减和布尔值

    我们在学校为想要自我测试的学生遇到了这个问题 我在这方面花了相当长的时间 但无法弄清楚 AX 寄存器中有 16 位数字 该数字是有符号的 得到它的 绝对值 AX中的数字必须不变 编辑 寄存器数量没有限制 并且 AX 寄存器可以更改 但在函数
  • Azure API应用程序的IP地址以及如何限制IP

    我已经部署了用 Java Servlet 编写的 API 应用程序 我想知道的是 我的 API 应用程序的 IP 地址以及仅允许来自一两个 IP 地址的请求的方式 这意味着我想限制除这些 IP 之外的所有 IP 似乎一旦我在一个地区部署多个
  • Eclipse 上的自动代码完成

    我希望 Eclipse 在我编写一些变量 类名称或关键字时自动向我建议所有可能的选项 就像在 Flash Develop 或 Visual Studio 中一样 是否可以 如果没有 我可以使用哪个 Java IDE 获得这个 I m spe
  • SQL 和唯一的 n 列组合

    Oracle 有没有一种简单的方法来查询 n 个字段的唯一组合 我有非常简单的两场解决方案 CREATE TABLE combinations AS SELECT 1 AS n FROM DUAL UNION ALL SELECT 2 FR
  • 如何使用 ng-style 设置 li:before 的 css

    我想用可变范围 宽度 更改 li before 的宽度值 ul li span step stepName uppercase span li ul 我正在执行这段代码 但它不起作用 请帮助 不幸的是你不能拥有pseudoelements
  • 启用基于客户位置的付款方式

    我不知道是否可能 但是 我们需要为巴塞罗那添加一些不同的付款方式 因此 我们的想法是 如果客户居住在巴塞罗那地区 加泰罗尼亚 他将看到与西班牙其他地区不同的信用卡付款方式和银行转账账户 WooCommerce 可以做到这一点吗 Thanks
  • Codeigniter - 从 where_in 中删除单引号

    我有两个疑问 genres this gt db gt select Group Concat intGenreId strDJGenres gt from tblDJGenres gt where intDJId this gt sess
  • 使用 rustdoc 生成 markdown 文档?

    有没有办法在 doc 中生成单个 markdown 文件 评论 多个 Markdown 文件 doc main md doc foo md等 也很好 我是 Rust 新手 虽然生成的 HTML 文档很好 但我主要生活在命令行上 真的不想为了
  • .setValue() 不能始终适用于 Google Sheets 脚本

    我一直在努力处理我在 Google Sheet 中编写的一段脚本 该脚本的目的是监视给定单元格的输入值 来自键盘 并验证输入是否遵循数据输入标准 例如 所有输入值必须遵循标准XX XX X 举个例子 A5 03 1是可以接受的 而B555
  • Swift:反映 NSManagedObject 子类的属性

    当使用 Mirror 访问 NSManagedObject 子类的内部结构时 所有托管变量都将被忽略 public class Foo NSManagedObject NSManaged var bar String var f Foo c
  • Windows 7 上的端口转发

    如何在 Windows 7 上将端口 xxx 上的传入请求重定向到 localhost yyy 开发服务器 相对于 2008 仅允许从本地主机访问 这还不够好 我需要从不同的计算机测试我的应用程序 感谢大家的建议 尽管我自己找到了答案 我下
  • 将数据存储在 iPhone 本地

    我正在构建一个应用程序 我想在设备本地存储用户信息 而不使用任何服务器数据库 但一切都在设备端 我希望存储特定的用户位置并将其显示在表格视图中 因此即使用户稍后启动应用程序 我也可以提取历史记录并向历史记录表提供过去的位置 基本上是本地数据
  • 使用PHP将制表符转换为空格以进行HTML显示?

    我需要在网页中显示一个纯文本文件 其中包含两个空格制表符的数据列 我所做的是使用 PHP 读取文本文件并将其打印出来 pre 标签使用等宽字体 如下所示 pre pre pre