我需要使用自定义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]} );
有什么建议吗?谢谢!
答案 0 :(得分:1)
您正在寻找的是前瞻/后方assertion in PCRE。具体而言,您需要对管道周围的空间进行负面观察并采取负面展望。另外你应该注意,角色|
在PCRE中有特殊含义,所以你需要来逃避它以获得文字。
preg_replace('/(?<! )\|(?! )/', '#', $str);
(?<! )
是一个负面的后卫。它表示匹配字符|
,但前提是它不是由空格进行的。 (?! )
是未来的负面看法。它表示匹配字符|
,但前提是它后面没有空格。