2012-04-08 68 views
1

我想弄清楚如何刪除文本文件之間的所有內容。如何從文本文件中刪除字符串,如果文本包含某個字

到目前爲止,我有這從文件中刪除整個urlset。

$myFile = "/here/it/is/sitemap.xml"; 

$stringdata = file_get_contents($myFile); 

$stringdata = preg_replace('#(<urlset.*?>).*?(</urlset>)#', '$1$2', $stringdata); 

$stringdata = str_replace('<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"></urlset>', '', $stringdata); 

$fh = fopen($myFile, 'w') or die("can't open file"); 

fwrite($fh, $stringdata); 
fclose($fh); 

return; 

的問題是我有幾個urlsets文本文件,但我只希望被刪除,這是一個某一個變量相匹配,所以這樣的事情(不工作urlsets之一):

$stringdata = preg_replace('#(<urlset.*?>).*? . $thisvariableisintheurlset . (</urlset>)#', '$1$2', $stringdata); 

有誰知道我需要添加到該刪除目標網址設定,甚至是更好的方法,如果這看起來像一個糟糕的方式來攻擊這個問題?

感謝

回答

1

嘗試使用http://php.net/manual/en/function.preg-quote.php

$stringdata = preg_replace('#(<urlset.*?>).*?' . preg_quote($thisvariableisintheurlset, '#') . '.*?(</urlset>)#', '$1$2', $stringdata); 

也確保前後的引用變量之後的事情都匹配(我補充道。*?,但可能是對你的情況不正確)

+0

優秀的作品,包括*?你補充說,謝謝Flocsy – 2012-04-08 10:02:36

相關問題