我的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,有人给我提出想法吗?
答案 0 :(得分:1)
$result=preg_replace('/^.\\/public\\/uploads\\/avatar(\\\\|\\/)/', "", $avatarFleName);
你的正则表达式工作正常。只需将返回值赋给变量然后访问它。replace
这里不是in place
。参见演示。
答案 1 :(得分:0)
在PHP中,您不要使用/
这两个/regexhere/
分隔您的正则表达式,因为它已经在字符串分隔符(在您的情况下为'
)。所以你可以这样做:
$avatarFileName = './public/uploads/avatar\php17C_552334c997e50.png';
preg_replace('^.\/public\/uploads\/avatar(\\|\/)', "", $avatarFleName);
print_r($avatarFileName)
在大多数语言中,它是两者之一,要么你有一个以'
或"
开头和结尾的字符串,或你有< em> regex literal 以/
开头和结尾的地方。它永远都不是。