PHP: проблема взрыва текста()

У меня проблема с функцией взрыва(). Я использую эту функцию, чтобы взорвать строки, такие как «Имя: реплика», но иногда в строке есть 2 или более двоеточий («:»), и возникает проблема, потому что мой сценарий: Пример: «Имя: реплика: реплика2: реплика3"

$explode = explode(":", $string);
$query = "INSERT INTO `table` (`field_1`, `field_2`) VALUES ('".$explode[0]."', '".$explode[1]."')";

И мне нужно любое решение для этой проблемы. Потому что, когда я разделяю строку после первого двоеточия ( ":" ), вторая часть должна быть последней частью.

С уважением, Джордж!

P.S. - Извините за мой английский.


person Community    schedule 01.03.2011    source источник
comment
как узнать, в каком двоеточии он должен быть разделен?   -  person Jacob    schedule 01.03.2011
comment
2 или более двоеточия означают: name:replica:blah:bluh ИЛИ name::replica?   -  person Shad    schedule 01.03.2011
comment
2 или более двоеточия означают: Имя: asdasd:asdasd:ahsiduashd:replica:rep2   -  person    schedule 01.03.2011


Ответы (3)


Я думаю, вы хотите использовать аргумент "limit" (третий) для explode():

list($attribute, $value) = explode(":", $string, 2);

Это гарантирует, что вы получите только два результата.

http://php.net/manual/en/function.explode.php

person Jon Nalley    schedule 01.03.2011

Используйте необязательный третий параметр $limit для explode():

$explode = explode(":", $string, 2);

Это говорит explode() вернуть массив с не более чем двумя элементами, помещая все последующие двоеточия во второй возвращаемый фрагмент строки. Обратите внимание, что в соответствии с вашими примерами вы должны использовать двоеточие плюс пробел:

$explode = explode(": ", $string, 2);

Но, возможно, это просто совпадение.

person David Harkness    schedule 01.03.2011

отредактировано по предложению @Jon Nalley. Обратите внимание, что limit (3-й параметр) поддерживается только PHP 5.x.

list($attribute, $value) = explode(":", $string, 2);
person yoda    schedule 01.03.2011
comment
Я пробовал ваш метод, но безуспешно... Вот мой код: $string = "Name: asdasd: asdasd:asdasdad"; list($attribute, $value) = explode(":", $string); echo $attribute.$value; Попробуйте, и вы увидите. - person ; 01.03.2011