sed不能与shell_Exec()一起使用

时间:2017-12-29 15:08:27

标签: php regex bash sed shell-exec

我有一个看起来像这样的文件:

NTILE()

我想删除包含**(双星号),单个星号后跟双引号(*“)和(tvg-name =”BR :)字符串的所有内容。 我设法用sed做它,但它不运行在php shell_exec();

这是我的sed代码

#EXTM3U
#EXTINF:-1 tvg-id="A&E [Brazil]" tvg-name="A&E **" tvg-logo="http://url/2dhy3yl" group-title="FILMES & SERIES",A&E **
http://url/live/Enrico/321/6660.ts
#EXTINF:-1 tvg-id="A E [Brazil]" tvg-name="AeE" tvg-logo="http://url/2dhy3yl" group-title="FILMES & SERIES",AeE
http://url/live/Enrico/321/232.ts
#EXTINF:-1 tvg-id="A&E [Brazil]" tvg-name="BR: AeE *" tvg-logo="http://URL/2dhy3yl" group-title="FILMES & SERIES",AeE *
http://url/live/Enrico/321/5171.ts
#EXTINF:-1 tvg-id="A&E HD [Brazil]" tvg-name="A&E HD" tvg-logo="http://URL/2dhy3yl$
http://url/live/Enrico/321/4057.ts

如何使用shell_exec或任何其他php函数执行此操作? 谢谢!

1 个答案:

答案 0 :(得分:1)

对于PHP,假设文件的内容已被收集到$ sContents参数中:

$sContents = preg_replace('/(\*\*|\*"|"BR:)/', '', $sContents);

对于sed:

sed -e 's/\*\*//' -e 's/\*"//' -e 's/"BR://' filename

sed很老了,Perl功能更强大,使用与PHP相同的正则表达式逻辑:

perl -pe 's/(\*\*|\*"|"BR:)//' filename