正则表达式替换为PHP无法正常工作

时间:2015-04-15 05:51:15

标签: php regex

我的PHP代码

$avatarFileName = './public/uploads/avatar\php17C_552334c997e50.png';
preg_replace('/^.\/public\/uploads\/avatar(\\|\/)/', "", $avatarFleName);
print_r($avatarFileName)

以上php代码返回字符串:

  

./公共/上传/化身\ php17C_552334c997e50.png

这不是我想要的字符串。我想要的字符串是

  

php17C_552334c997e50.png

我在网站http://www.phpliveregex.com/上进行了测试,它返回了正确的字符串php17C_552334c997e50.png,但没有在我的php应用程序中。

我使用的是PHP 5.5,有人给我提出想法吗?

2 个答案:

答案 0 :(得分:1)

$result=preg_replace('/^.\\/public\\/uploads\\/avatar(\\\\|\\/)/', "", $avatarFleName);

你的正则表达式工作正常。只需将返回值赋给变量然后访问它。replace这里不是in place。参见演示。

https://regex101.com/r/sJ9gM7/108

答案 1 :(得分:0)

在PHP中,您不要使用/这两个/regexhere/分隔您的正则表达式,因为它已经在字符串分隔符(在您的情况下为')。所以你可以这样做:

$avatarFileName = './public/uploads/avatar\php17C_552334c997e50.png';
preg_replace('^.\/public\/uploads\/avatar(\\|\/)', "", $avatarFleName);
print_r($avatarFileName)

在大多数语言中,它是两者之一,要么你有一个以'"开头和结尾的字符串,你有< em> regex literal 以/开头和结尾的地方。它永远都不是。