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

PHP如何移除字符串中双引号但保留数字后表示英寸的双引号

解决方案

问题原因

你原来使用的正则/"(\S*?)"/仅能匹配成对出现、中间无空白字符的双引号包裹内容,完全没有适配「保留数字后英寸单位双引号」的规则,因此大部分场景下匹配失效。

实现代码

直接通过负向后行断言匹配所有前缀不是数字的双引号,直接删除即可:

$processed_str = preg_replace('/(?<!\d)"/', '', $original_str);

规则说明

正则/(?<!\d)"/的逻辑:

  • (?<!\d)是负向后行断言,校验当前位置的前一个字符不是数字
  • 仅匹配满足上述条件的双引号,替换为空后,自然就只保留了前缀为数字的英寸单位双引号

效果验证

对给出的示例处理结果完全符合预期:

  • 输入this is "the first" line → 输出this is the first line
  • 输入"insert the 3.5" floppy drive" → 输出insert the 3.5" floppy drive
  • 输入I watched "the 100" and liked it → 输出I watched the 100 and liked it
  • 输入"bowie" mug → 输出bowie mug

内容的提问来源于stack exchange,提问作者Wonko the Sane

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 14:06:04