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

问题描述 投票:0回答:1

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

我需要的结果示例1:

字符串=我的酷字符串-201

结果=我的酷弦-201

我需要的结果示例2:

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

字符串=我的酷字符串-201

结果=我的酷弦-201

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

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

附加上下文:

My Cool String - 201的示例字符串中

我的酷字符串表示度假村的名称。

201代表房间号。

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

php regex preg-replace pcre
1个回答
1
投票

您可以使用

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

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

详细信息

  • [--连字符
  • [(?=.* -)-一个正向超前,它需要在除换行符以外的任何0+个字符之后都要求 -,并尽可能多(在s之后使用/标志来匹配换行符)。
© www.soinside.com 2019 - 2024. All rights reserved.