Как использовать функцию разнесения в PHP, используя 2 разделителя вместо 1? - PullRequest
5 голосов
/ 25 июля 2010

Предположим, у меня есть следующее:

$string = "(a) (b) (c)";

Как бы я взорвал его, чтобы получить содержимое в скобках. Если бы содержимое строки было разделено только одним символом вместо 2, я бы использовал:

$string = "a-b-c";
explode("-", $string);

Но как это сделать, когда используются 2 разделителя для инкапсуляции предметов, подлежащих взрыву?

Ответы [ 7 ]

6 голосов
/ 25 июля 2010

Вы должны использовать preg_split или preg_match вместо.

Пример:

$string = "(a) (b) (c)";
print_r(preg_split('/\\) \\(|\\(|\\)/', $string, -1, PREG_SPLIT_NO_EMPTY));
Array
(
    [0] => a
    [1] => b
    [2] => c
)

Обратите внимание, что заказ важен.

4 голосов
/ 25 июля 2010

Если нет круглых скобок, вы можете использовать регулярное выражение.

$string = "(a) (b) (c)";
$res = 0;
preg_match_all("/\\(([^)]*)\\)/", $string, $res);
var_dump($res[1]);

Результат:

array(3) {
  [0]=>
  string(1) "a"
  [1]=>
  string(1) "b"
  [2]=>
  string(1) "c"
}

См. http://www.ideone.com/70ZlQ

3 голосов
/ 25 июля 2010

Если вы точно знаете, что строки всегда будут иметь форму (a) (b) (c), с точно одним пробелом между каждой парой скобок и без символов в начале или конце, вы можете избежать необходимости использовать функции регулярного выражения:

$myarray = explode(') (', substr($mystring, 1, -1));
1 голос
/ 20 сентября 2016

Попробуйте следующий код:

<?php
  $s="Welcome to (London) hello ";    
  $data = explode('(' , $s );    
  $d=explode(')',$data[1]);    
  print_r($data);    
  print_r($d);    
?>        

Выход:

Array ( [0] => Welcome to [1] => London) hello )
Array ( [0] => London [1] => hello )
0 голосов
/ 25 июля 2010

Если ваши разделители такие же, то вы можете сделать это

$string = "(a) (b) (c)";
$arr = explode(") (", $string);
// Then simply trim remaining parentheses off.
$arr[0] = trim($arr[0], "()");
end($arr) = trim($arr[0], "()");
0 голосов
/ 25 июля 2010

Вы можете попробовать функцию preg_split().

0 голосов
/ 25 июля 2010

Возможно использовать preg_split с шаблоном чередования:

http://www.php.net/manual/en/function.preg-split.php

...