使用PHP函数将一个字符替换为另一个字符

时间:2016-08-29 01:55:06

标签: php regex preg-replace str-replace

我需要使用自定义PHP函数来处理这些数据,

Austin Metro>Central Austin|Austin Metro>Georgetown|Austin Metro>Lake Travis | Westlake|Austin Metro>Leander | Cedar Park|Austin Metro>Round Rock | Pflugerville | Hutto|Austin Metro>Southwest Austin

并将其转换为如下所示:

Austin Metro>Central Austin#Austin Metro>Georgetown#Austin Metro>Lake Travis | Westlake#Austin Metro>Leander | Cedar Park#Austin Metro>Round Rock | Pflugerville | Hutto#Austin Metro>Southwest Austin

目前使用以下内容但也替换了字符“|”在“Leander | Cedar Park”之间。有没有办法只替换之前或之后没有空格的?

 preg_replace("/|/", "#", {categories[1]} );

有什么建议吗?谢谢!

1 个答案:

答案 0 :(得分:1)

您正在寻找的是前瞻/后方assertion in PCRE。具体而言,您需要对管道周围的空间进行负面观察并采取负面展望。另外你应该注意,角色|在PCRE中有特殊含义,所以你需要来逃避它以获得文字。

preg_replace('/(?<! )\|(?! )/', '#', $str);

(?<! )是一个负面的后卫。它表示匹配字符|,但前提是它不是由空格进行的。 (?! )是未来的负面看法。它表示匹配字符|,但前提是它后面没有空格。