PHP preg_replace:替换出现在最后一个带空格的连字符之前的字符串中的所有连字符

使用preg_replace(或其他基于PHP的选项):我需要用空格替换字符串中出现在最后一个连字符前面的所有连字符 。

我需要的结果示例#1:

string =我的酷字符串-201

结果=我的酷弦-201

我需要的结果示例#2:

注意:请注意,此字符串示例仅包含1个连字符。

string =我的酷弦-201

结果=我的酷弦-201

我当前的代码是去除所有连字符,并以空格代替。

$origString = 'My-Cool-String - 201';
$newString = preg_replace("/[^A-Za-z0-9]/",' ',$origString);

其他背景:

在示例字符串My Cool String - 201

我的酷字符串代表度假胜地的名称。

201 代表房间号。

度假村名称中包含连字符时,我遇到了最初提到的问题。

T87182380 回答:PHP preg_replace:替换出现在最后一个带空格的连字符之前的字符串中的所有连字符

您可以使用

preg_replace('/-(?=.* -)/',' ',$origString)

请参见PHP demoregex demo。要解决任何空格问题,请使用'/-(?=.*\s-)/''/-(?=.*\s-\s)/'(如果连字符的两边都应有空格)。

详细信息

  • --连字符
  • (?=.* -)-一个正向超前查询,它要求在除换行符以外的任何0+个字符之后使用 -,并尽可能多地使用(在s之后使用/标志进行匹配跨行)。
本文链接:https://www.f2er.com/2690781.html

大家都在问