PHP регулярное выражение - расщепление строк - одна форма вывода - PullRequest
1 голос
/ 24 сентября 2010

Мне интересно, как можно разделить строки с помощью разделителя |, если входные строки могут иметь следующую форму:

"foo,    bar"
"foo       ,bar"
"foo,bar"
"foo , bar"
"foo bar"
"foo,,bar"

Таким образом, единственные возможные выходные строки - это:

"foo|bar"
"foo|bar|other|here"

Независимо от того, сколько терминов содержится во входной строке.

Любые мысли приветствуются!

Ответы [ 3 ]

2 голосов
/ 24 сентября 2010
preg_replace('/\s*,\s*/', '|', $string);

Это будет обрабатывать случаи с запятой;) Если вам нужен только один пробел:

preg_replace('\s*,\s*|\s+', '|', $string);
1 голос
/ 24 сентября 2010

Я бы сделал:

    $input = preg_replace('/[ ,]+/', '|', $input);
0 голосов
/ 24 сентября 2010

Что-то вроде этого должно помочь ...

$outputstring = preg_replace_all('/\b[ ,|]+\b/','|',$inputstring);

, чтобы объяснить:

\b - это граница слова, поэтому она ищет любую комбинацию пробелов,запятые или трубы между двумя границами слова.

...