You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将多行制表符分隔内容转换为指定格式的PHP数组?

解决制表符分隔内容转PHP数组的正则方案

嘿,我来帮你搞定这个转换问题!之前的正则用空格分隔字段,自然没法处理带空格的描述字段——毕竟咱们的字段分隔符是制表符,不是空格对吧?

正确的正则表达式配置

查找表达式(开启多行模式)

^(.*?)\t(\d+)\t(.*)$

解释下每个部分:

  • ^ 和 $:匹配每一行的开头和结尾(多数编辑器勾选「正则表达式」后会自动支持多行匹配)
  • (.*?):非贪婪匹配第一个字段(比如FOO、FAO),遇到制表符就停止,避免把后面的内容误吞进来
  • \t:精准匹配字段之间的制表符分隔符
  • (\d+):捕获数字部分(包括带前导零的090这类格式)
  • (.*):捕获最后一个字段,不管里面有多少空格、撇号或者其他特殊字符(比如FOO's BAR、Pizza's joy poy)

替换表达式

array(\2, "\1", "\3"),

这里的\1、\2、\3对应查找时捕获的三个组:

  • \1是第一个字段(名称)
  • \2是数字部分
  • \3是描述字段

实际转换效果

把你给的输入内容:

FOO	100	BOR
PAL	350	PIL
KIL	090	KUP
FAS	130	FOO's BAR
FAO	120	Pizza's joy poy

用上面的正则替换后,就能得到你想要的PHP数组格式:

array(100, "FOO", "BOR"),
array(350, "PAL", "PIL"),
array(090, "KIL", "KUP"),
array(130, "FAS", "FOO's BAR"),
array(120, "FAO", "Pizza's joy poy"),

小提示

如果你的编辑器需要手动指定多行模式,可以在正则末尾加上m标志,变成^(.*?)\t(\d+)\t(.*)$m,这样就能确保每一行都被单独处理啦。

内容的提问来源于stack exchange,提问作者Mattia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:23:55