6

I have a textarea that contains phone numbers, each number in a separate line. I want to explode that string into an array using

explode("\n", $numbers);

or

explode("\r\n", $numbers);

This is not working. Please, help me. Thanks!

schellmax
  • 5,678
  • 4
  • 37
  • 48
Sergiu Svet
  • 101
  • 1
  • 2
  • 8

3 Answers3

10

$records = preg_split('/[\r\n]+/', $mystring, -1, PREG_SPLIT_NO_EMPTY);

This should do it.

Frederick Behrends
  • 3,075
  • 23
  • 47
10

As the manual states: Returns an array of strings.

So you'll have to store the result. The or won't work that way either. If you don't know whether the input will contain \n or \r\n, you could do a replace to replace \r by an empty string, then explode on \n.

This should do the trick:

$numbers = explode("\n", str_replace("\r", "", $numbers));
CodeCaster
  • 147,647
  • 23
  • 218
  • 272
  • 1
    you're right, of course. User submitted data may not translate to the system EOL. comment withdrawn. – Ben D Feb 20 '12 at 14:58
3

Use this

<?php

 $input = $_POST['textarea_name'];
 $new_array = array_values(array_filter(explode(PHP_EOL, $input)));

 // explode -> convert textarea to php array (that lines split by new line)
 // array_filter -> remove empty lines from array
 // array_values -> reset keys of array

?>
Abdo-Host
  • 2,470
  • 34
  • 33