ryk*_*ykr 5 php wordpress bash sanitization
我正在尝试找到一种在 Bash 脚本中清理/过滤文件名的方法,其方式与 WordPress 中的函数的工作方式完全相同sanitize_file_name。它必须获取文件名字符串并输出与该函数相同的干净版本。
GNU bash,版本 4.3.11(1)-release (x86_64-pc-linux-gnu)
Ubuntu 14.04.5 LTS (GNU/Linux 3.13.0-57-generic x86_64)
这是 perl 5,版本 18,subversion 2 ( v5.18.2) 为 x86_64-linux-gnu-thread-multi 构建
输入文件名示例
这些实际上可以是并且通常是您可以在任何操作系统(尤其是 Mac 和 Windows)上创建的文件名的任何内容。
This File + Name.mov
Some, Other - File & Name.mov
ANOTHER FILE 2 NAME vs2_.m4v
some & file-name Alpha.m4v
Some Strange & File ++ Name__.mp4
This is a - Weird -@ Filename!.mp4
Run Code Online (Sandbox Code Playgroud)
输出文件名示例
这些是 WordPresssanitize_file_name函数生成上述示例的方式。
This-File-Name.mov
Some-Other-File-Name.mov
ANOTHER-FILE-2-NAME-vs2_.m4v
some-file-name-Alpha.m4v
Some-Strange-File-Name__.mp4
This-is-a-Weird-@-Filename.mp4
Run Code Online (Sandbox Code Playgroud)
它不仅仅需要解决这些情况,它还执行与该sanitize_file_name函数相同的功能,否则它将产生重复的文件,并且它们不会在网站上更新。
我的一些想法是,也许我可以以某种方式使用该函数本身,但该视频编码服务器上没有 PHP,因为它是一个非常小的服务器,通常只是对视频进行编码并上传它们。它没有太多内存、CPU 能力或磁盘空间,它是一个 DigitalOcean 512MB RAM 服务器。也许我可以以某种方式在 Web 服务器上创建一个远程 PHP 脚本来通过 HTTP 处理它,但我也不完全确定如何通过 Bash 来做到这一点。
对于我有限的 Bash 技能来说,这太复杂了,所以我想知道是否有人可以提供帮助或知道已经执行此操作的脚本在哪里。我找不到一个。我能找到的只是将空格或特殊字符更改为下划线或破折号的脚本。但这并不是该函数的全部sanitize_file_name功能。
如果您好奇,由于该网站处理视频的方式,文件名必须与此 WordPress 功能兼容。它允许人们通过 WordPress 上传视频,然后将视频发送到单独的视频服务器进行编码,然后发送到 Amazon S3 和 CloudFront 以在网站上提供服务。不过,它还允许使用外部媒体插件通过 Dropbox 添加视频(实际上现在使用 Dropbox 同步复制视频上传,但这是另一个小问题)。该视频服务器还同步到 Dropbox 帐户并将其中的文件夹列入白名单,并让该 Bash 脚本监视 VideoServer Dropbox 文件夹,使用该脚本将inotifywait视频从该文件夹临时复制到视频编码器对其进行编码的另一个文件夹。这样,当他们更新 Dropbox 中的视频时,它会自动重新编码并更新网站上显示的视频。他们可以通过 WordPress 上传文件,但由于某种原因他们似乎不想或不知道如何执行此操作。
如果您安装了 Perl,请尝试:
#!/bin/bash
function sanitize_file_name {
echo -n $1 | perl -pe 's/[\?\[\]\/\\=<>:;,''"&\$#*()|~`!{}%+]//g;' -pe 's/[\r\n\t -]+/-/g;'
}
filename="Wh00t? it's a -- re@lly-weird {file&name} (with + Plus and__1% #of# [\$qRots\$!]).mov"
cleaned=$(sanitize_file_name "$filename")
echo original : "$filename"
echo sanitised: "$cleaned"
Run Code Online (Sandbox Code Playgroud)
结果是:
original : Wh00t? it's a -- re@lly-weird {file&name} (with + Plus and__1% #of# [$qRots$!]).mov
sanitised: Wh00t-it's-a-re@lly-weird-filename-with-Plus-and__1-of-qRots.mov
Run Code Online (Sandbox Code Playgroud)
看看 WP 功能,这模拟得很好。
| 归档时间: |
|
| 查看次数: |
4027 次 |
| 最近记录: |