2013-07-14 60 views
1

此代碼工作了幾個星期,現在返回一個錯誤。有什麼migth發生的任何建議?這似乎PHP腳本中的SED命令(錯誤表達式#1,字符34:前面的正則表達式無效)

... </script> <script type="text/javascript" src=" ... 

期望我解析做出細微的變化使我的解析器上嗆網站...


想象一下文件test.html以下字符串(不點)字符串轉換

Replace <script type="text/javascript" with <tagkilled 

隨着以下PHP代碼

$file = "test.html"; 

    // Destroy javascript codetag 
    $command='/bin/sed -ri \'s/<script type="text\/javascript"/<tagkilled/g\' '.str_replace(' ','\ ',$file); 
    exec($command); 

返回錯誤信息

/bin/sed: -e expression #1, char 34: Invalid preceding regular expression 

圖片的標題說明:在Ubuntu上運行12.10 sed的4.2.1 2010十二月

+0

您將始終易受遠程站點的HTML所做更改的影響。 HTML是不是你可以使用正則表達式([見這裏](http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454) )。閱讀PHP的DOMDocument類更強大的解決方案。 – 2013-07-14 09:19:48

+0

上面的代碼準備通過DOM解析器進行解析的文檔。爲了進入頁面的腳本段,我需要刪除腳本標籤。這正是代碼所做的。 – somethis

回答

3

此作品在這裏與GNU ,請嘗試使用其他字符替換在sed的s命令的斜線:s#search#replace#[flags]

$ cat file 
</script> <script type="text/javascript" src=" 

$ sed 's#<script type="text/javascript"#<tagkilled#g' file 
</script> <tagkilled src=" 


如果此處不需要g


你不應該把與正則表達式和類似的文件格式。使用工具。

+0

另外,PHP不具有某種自己的sub/repl工具嗎?每天都有一個關於從'php'使用'sed'的問題。那是怎麼回事!? ; -) 祝你們好運。 – shellter