2013-03-02 188 views

回答

2
$file = file_get_contents("http://www.example.com"); 

// remove sigle word hello 
echo preg_replace('/(hello)/im', '', $file); 

// remove multiple words hello, foo, bar, foobar 
echo preg_replace('/(hello|foo|bar|foobar)/im', '', $file); 

編輯刪除線

// read each file lines in array 
$lines = file('http://example.com/'); 

// match single word hello 
$pattern = '/(hello)/im'; 

// match multiple words hello, foo, bar, foobar 
$pattern = '/(hello|foo|bar|foobar)/im'; 

$rows = array(); 

foreach ($lines as $key => $value) { 
    if (!preg_match($pattern, $value)) { 
     // lines not containing hello 
     $rows[] = $line; 
    } 
} 

// now create the paragraph again 
echo implode("\n", $rows); 
+0

我需要整個行刪除,不僅字。 – 2013-03-02 02:11:46

+0

這實際上只是移除了單詞的實例,而不是單詞出現的行,因爲這個問題需要。 – 2013-03-02 02:13:33

+0

@CodeProtocol來自PHP手冊:「如果您只想檢查一個字符串是否包含在另一個字符串中,請不要使用preg_match(),因爲它們會更快,所以請使用strpos()或strstr()。 (http://php.net/manual/en/function.preg-match.php) – 2013-03-02 02:24:39

9
$file = file_get_contents("http://www.bigsite.com"); 
$lines = explode("\n", $file); 
$exclude = array(); 
foreach ($lines as $line) { 
    if (strpos($line, 'hello') !== FALSE) { 
     continue; 
    } 
    $exclude[] = $line; 
} 
echo implode("\n", $exclude); 
+1

如果使用'file'而不是'file_get_contents',則可以跳過兩遍(一次將其讀入一個字符串,另一次將'爆炸'到字符串中)。 'file'將它直接讀入數組中。 – 2013-03-02 02:30:00

1

在這裏你去:

$file = file('http://www.bigsite.com'); 

foreach($file as $key=>$line) { 
    if(false !== strpos($line, 'hello')) { 
    unset $file[$key]; 
    } 
} 

$file = implode("\n", $file); 
相關問題