2010-07-18 3 views
5

Я текстовый файл с адресами электронной почты под под другими, как:PHP взрывается новые строки содержимого из текстового файла

[email protected] 
[email protected] 

До сих пор мне удалось открыть его с

 $result = file_get_contents("tmp/emails.txt");
, но я не знаю, чтобы получить адреса электронной почты в массиве. В принципе, я мог бы использовать взрыв, но как я могу разграничить новую строку? заранее за любой ответ!

+1

Ответы ниже являются идеальными; но для справки, вы можете использовать explode с символом новой строки, представленным как \ n. (Это также может быть \ r \ n в зависимости от того, используете ли вы Windows или Linux). – user11977

ответ

25

Просто прочитайте файл, используя file(), и вы получите массив, содержащий каждую строку файла.

$emails = file('tmp/emails.txt'); 

Чтобы не добавлять новые строки для каждого адреса электронной почты, используйте FILE_IGNORE_NEW_LINES флаг, и пропускать пустые строки, используйте FILE_SKIP_EMPTY_LINES флаг:

$emails = file('tmp/emails.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); 

делает var_dump($emails) второго примера дает это:

array(2) { 
    [0]=> 
    string(13) "[email protected]" 
    [1]=> 
    string(14) "[email protected]" 
} 
+1

Несмотря на то, что это работает, оно не учитывает новые окна, основанные на окнах. использование preg_split работает более надежно. – Jubair

2

Как сумасшедший, как это кажется, делает return или enter внутри двойной кавычки ("") ограничивает новую строку. Для того, чтобы понять, введите:

explode("", "Stuff to delimit"); 

и просто хит возвращение в середине "", так что вы получите:

explode(" 

", "stuff to delimit"); 

и она работает. Возможно, нетрадиционные и могут работать только в Linux. Но это работает.

4
$lines = preg_split('/\r\n|\n|\r/', trim(file_get_contents('file.txt')));