Php 正则表达式将非字母替换为'-';,但请留下任何经期
我试图从文件路径中删除所有非字母,但我需要在末尾保留扩展名 文件示例:Php 正则表达式将非字母替换为'-';,但请留下任何经期,php,regex,Php,Regex,我试图从文件路径中删除所有非字母,但我需要在末尾保留扩展名 文件示例: $text=cat.jpg 我当前正在使用这个$text=preg_replace('/[^\\pL\d]+/u','-',$text) 结果:cat jpg 但这也会将任何句点转换为连字符,我四处查看并尝试了从其他帖子中找到的内容,但他们只是一起删除了句点 非常感谢您的帮助。您可以使用此基于交替和负前瞻的正则表达式进行搜索: [^\pL\pN.]+|\.(?![^.]+$) 正则表达式分解: [^\pL\pN.]+
$text=cat.jpg
我当前正在使用这个$text=preg_replace('/[^\\pL\d]+/u','-',$text)代码>
结果:cat jpg
但这也会将任何句点转换为连字符,我四处查看并尝试了从其他帖子中找到的内容,但他们只是一起删除了句点
非常感谢您的帮助。您可以使用此基于交替和负前瞻的正则表达式进行搜索:
[^\pL\pN.]+|\.(?![^.]+$)
正则表达式分解:
[^\pL\pN.]+ # Search 1 or more of any char that is not DOT and letter and number (unicode)
| # OR
\. # search for DOT
(?![^.]+$) # negative lookahead to skip DOT that is just before file extension
在PHP代码中:
$text = preg_replace('/[^\pL\pN.]+|\.(?![^.]+$)/u', '-', $text);
《代码》中的cat.super-fluffy2.jpg.b_-ak应该是怎样的呢?@MonkeyZeus狡猾,但可能是这样的:cat-super-fluffy2-jpg.b-ake你确定吗?这与您的标题或问题正文中的描述不符,接受的答案将无法满足您的期望。@MonkeyZeus I编辑了回复,接受的答案是合适的,不理想,但有效。