Php 仅在字符正则表达式之前匹配空格并用破折号替换空格
我想要的是用破折号替换空格Php 仅在字符正则表达式之前匹配空格并用破折号替换空格,php,regex,preg-replace,Php,Regex,Preg Replace,我想要的是用破折号替换空格-,但前提是该空格后面有一个字符。原因是我有一个字符串数组,其中一些字符串在最后一个单词或字符后插入空格。(这是我无法控制的)。 例如 在下面的示例中,我使用了%20来显示空间的位置 string1=farmer%20jones string2=farmer%20jim%20 我有下面的regexpreg_replace('/\s./','-',$string) 我想我已经成功了一半,但是上面的代码搜索字符前面的空格,并将其替换为- 我用上面的正则表达式得到的是 str
-
,但前提是该空格后面有一个字符。原因是我有一个字符串数组,其中一些字符串在最后一个单词或字符后插入空格。(这是我无法控制的)。
例如
在下面的示例中,我使用了%20来显示空间的位置
string1=farmer%20jones
string2=farmer%20jim%20
我有下面的regexpreg_replace('/\s./','-',$string)代码>
我想我已经成功了一半,但是上面的代码搜索字符前面的空格,并将其替换为-
我用上面的正则表达式得到的是
string1=farmer-jones
string2=farmer jim-
我想要的是:
string1=farmer-jones
string2=farmer jim
我不想添加后面的-
非常感谢您的任何帮助您可以在此处使用消极前瞻:
$repl = preg_replace('/\h+(?!$)/', '-', $string);
\h+
将匹配一个或多个水平空白
(?!$)
将断言下一个位置不是行尾
在一个正则表达式中,这一切都是可能的,但是在应用当前正则表达式之前调整值也可以解决您的问题。。。