Как разбить эту строку на две части в PHP? - PullRequest
0 голосов
/ 04 октября 2011

У меня есть строка, которая может содержать два типа значений:

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

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

$a = 'Order';

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

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

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

Ответы [ 7 ]

5 голосов
/ 04 октября 2011

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

<?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'
?>
5 голосов
/ 04 октября 2011

Используйте Разнесение, чтобы разделить на _

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

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

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

2 голосов
/ 04 октября 2011

Посмотрите на взорваться

$ split_array = взорваться ('_', $ string);

1 голос
/ 04 октября 2011

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

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

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

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

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

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

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

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

0 голосов
/ 02 июля 2013
$string = "Order_Invoice";

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

echo $array[0]; //Order
echo $array[1]; //Invoice
0 голосов
/ 02 июля 2013

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

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

0 голосов
/ 04 октября 2011

Если я следую вашей логике, это должно работать, используя 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';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...