2012-04-08 37 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

相关问题