sed不能与shell_Exec()一起使用

问题描述 投票:-2回答:1

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

#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

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

这是我的sed代码

sed -i '/\*\*/d' ./filename
sed -i '/tvg-name="BR:/d' ./filename
sed -i '/\*"/d' ./filename

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

php regex bash sed shell-exec
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.