2011-10-03 3 views
-1

У меня есть строка, которая может возможно провести два типа значений,Как разбить эту строку на две в PHP?

//Example 1 
$string = 'Order'; 
//Example 2 
$string = 'Order_Invoice'; 

Я хочу, чтобы определить, если строка содержит символ _ и разделить строку соответственно, если моя строка имеет значение, как в примере 1, то есть. Order без _, тогда он должен создать другую переменную и присвоить ей значение. Как и в следующем примере.

$a = 'Order'; 

И, как, например, 2, если моя строка содержит _, то он должен создать две переменные и хранить их в следующем примере.

$a = 'Order'; 
$b = 'Invoice'; 

Как это сделать?

+1

Пытались ли вы простой поиск в PHP документации для "раскола"? –

+1

['explode()'] (http://php.net/explode) строка в массив. – salathe

ответ

4

Вы можете попробовать это:

<?php 
    $string = 'Order'; 
    $array = explode('_', $string); 
    echo $array[0]; // echos 'Order' 

    $string2 = 'Order_Invoice'; 
    $array = explode('_', $string2); 
    echo $array[0]; // echos 'Order' 
    echo $array[1]; // echos 'Invoice' 
?> 
0

Если я следовать вашей логике, это должно работать, используя strpos(), чтобы увидеть, если _ присутствует в строке:

$a = 'Order'; 
$b = 'Whatever'; 

if(strpos($string, '_') !== false) 
{ 
    $b = 'Invoice'; 
} 

И более обобщенном ответ с помощью explode() и list():

$string = 'Order_Invoice'; 

if(strpos($string, '_')) 
{ 
    list($a, $b) = explode($string, '_'); 
} 
else 
{ 
    $a = $string; 
    $b = 'Something else'; 
} 
+0

'$ strpos'? Я слишком часто делаю это tpyo [sic]. –

+0

Отредактировано. Я заметил это, прежде чем вы прокомментировали. Не могли бы вы удалить свой -1 сейчас, когда все в порядке? – Bojangles

+0

Я не спустил вниз. Перемещение для простой опечатки просто неверно. –

2

Посмотрите на explode

$ split_array = explode ('_', $ string);

5

Использование взрываются разделить на _

$a = explode('_', $string); 

//$a[0] = 'Order' 
//$a[1] = 'Invoice' 

Если нет _ не был найден, будет установлен только $a[0]

1

PHP имеет split() функцию, но это, вероятно, не самый лучший вариант для вас.

Простейшим решением является функция explode(). Используйте его следующим образом:

$result = explode('_', $input); 

и вы получите $result как массив с элементом для каждого слова разделяются символом подчеркивания.

Если вы действительно хотите быть в отдельных переменных, а не массив, то вы можете использовать list() определить переменные, которые вы хотите:

list($a, $b) = explode('_', $input); 

, но если честно, то метод массива проще и лучше.

Если вам нужно более сложное разделение, есть также preg_split(), но это может быть немного прическа для работы, если вы не знаете, что делаете, поэтому я оставлю вас только с explode().

+0

спасибо, что это было очень полезно. :) – Salman

0

Вы можете использовать это заявление следующим образом

$a = explode('_', $_GET['string']);

0
$string = "Order_Invoice"; 

$array = explode("_", $string); 

echo $array[0]; //Order 
echo $array[1]; //Invoice 
Смежные вопросы