У меня есть проблема, у меня есть строковый массив, и я хочу, чтобы взорваться в другой разделитель. Например
$example = 'Appel @ Ratte';
$example2 = 'apple vs ratte'
и мне нужен массив, который взрывается в @ или против
Я уже написал решение, но если у всех есть лучшее решение, пожалуйста, напишите здесь.
private function multiExplode($delimiters,$string) {
$ary = explode($delimiters[0],$string);
array_shift($delimiters);
if($delimiters != NULL) {
if(count($ary) <2)
$ary = $this->multiExplode($delimiters, $string);
}
return $ary;
}
Ответы:
как насчет использования
источник
explode()
отдельным аргументам/
,?
). Например:preg_split("/(\/|\?|=)/", $foo);
.$str='/x/1/2/3/4/5/y/100/200/z/777'; preg_split("/(x|y|z|)/", $str);
и посмотретьarray('x'=>'1/2/3/4/5', 'y'=>'100/200', 'z'=>'777')
/ (
и) /
остановил работу preg_split. Мне пришлось удалить пробелы, а затем всеВы можете взять первую строку, заменить все
@
сvs
помощьюstr_replace
, а затем взрыватьсяvs
или наоборот.источник
(@|@!)
case)Источник: php @ metehanarslan на php.net
источник
Как насчет использования
strtr()
для замены всех остальных разделителей первым?Я думаю, это нечитаемо, но я проверил, как работает здесь.
Однострочники ФТВ!
источник
Не подойдет
strtok()
для вас?источник
Просто вы можете использовать следующий код:
источник
Вы можете попробовать это решение .... Это прекрасно работает
Источник: http://www.phpdevtips.com/2011/07/exploding-a-string-using-multiple-delimiters-using-php/
источник
Я делаю это так ...
источник
Как насчет этого?
В вашем случае вы должны использовать Array для параметра $ delimiters. Тогда можно использовать несколько символов в качестве одного разделителя.
Если вам не нужны конечные пробелы в ваших результатах, вы можете удалить
array_map('trim', [...] )
деталь в обратной строке. (Но не будьте придирчивым в этом случае.preg_split
в нем.)Требуемая версия PHP: 5.3.0 или выше.
Вы можете проверить это здесь
источник
У вас возникнут некоторые проблемы (например, если у вас есть эта строка: «vs @ apple») с использованием этого метода разделения, но если мы начнем с заявления, что вы подумали об этом и исправили все возможные конфликты, вы могли бы просто заменить все вхождения
$delimiter[1]
в$delimiter[n]
с$delimiter[0]
, а затем разделить на этой первой?источник
Если ваш разделитель состоит только из символов, вы можете использовать его
strtok
, который здесь больше подходит. Обратите внимание, что вы должны использовать его сwhile
циклом для достижения эффекта.источник
Это будет работать:
Как вы можете видеть, он сначала склеивает разорванные части \ n \ r вместе с пробелом, а затем снова разрезает его, на этот раз забирая пробелы с собой.
источник