【问题标题】:How can I place a dot after each character using preg replace如何使用 preg replace 在每个字符后放置一个点
【发布时间】:2016-01-19 15:00:47
【问题描述】:

这段代码的目的是找到独立的字符并在每个字符后放置一个点。例如。 “Jane Doe L D I”应该返回“Jane Doe L. D. I.”

我的代码在特定条件下工作。但是,当我使用以下场景时,它会失败。当我使用“Jeans Shirts K/N”字符串并返回“Jeans Shirts K./N”时,它失败了。

$string = "Jeans Shirts K-92";  
echo preg_replace('/\b[A-z]{1}\b/', '$0.', $string);   

Result: (Fail)   
Jeans Shirts K.-92

Expected Result:
Jeans Shirts K-92

【问题讨论】:

标签: php regex preg-replace preg-match str-replace


【解决方案1】:

你应该使用:

echo preg_replace('/(?<=\s|^)[A-Za-z](?=\s|$)/', '$0.', $string);
//=> Jeans Shirts K-92

[A-z] 不正确,因为它匹配 ASCII A (65) 和 z (122) 之间的更多字符。

【讨论】:

  • 谢谢。你的回应 echo preg_replace('/\b[A-Z]\b(?!\.)/', '$0.', $string);只解决了一部分。 K/N 场景呢?
  • Jeans Shirts K/N 的预期结果是什么?
  • 不应修改它并返回相同的 Jeans Shirts K/N 但是您的代码仍然返回 Jeans Shirts K./N。
  • 哦,是的,这是我的建议。
  • @user2635901:如果这不起作用,我强烈建议您编辑问题并澄清要求。通过 cmets 提供的信息并不能使它成为一个有用的问题。
猜你喜欢
  • 2016-04-23
  • 2016-04-19
  • 2012-04-07
  • 2019-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-24
  • 1970-01-01
相关资源
最近更新 更多