提问者:小点点

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


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

我需要的结果示例1:

String=My-Cool-String-201

结果 = 我的酷字符串 - 201

示例#2我需要的结果:

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

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

结果 = 我的酷字符串 - 201

我当前的代码是删除所有连字符并用空格替换。

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

其他上下文:

“我的酷字符串 - 201”的示例字符串中

My Cool String代表一个度假村的名称。

201表示房间号。

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


共1个答案

匿名用户

你可以使用

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

请参阅PHP演示和正则表达式演示。要考虑任何空格,请使用'/-(? =.*\s-)/''/-(? =.*\s-\s)/'(如果连字符两边都应该有空格)。

细节

    < li>- -连字符 < li>(?=.* -) -一个积极的前瞻,要求尽可能多的在除换行符以外的任何0字符之后有< code> -(在< code>/之后使用< code>s标志以跨换行符匹配)。