php строка токенизации - PullRequest
1 голос
/ 29 июля 2011

Интересно, могу ли я получить совет по токенизации строки в php, так как я относительно новичок в этом языке.

У меня есть это:

$full_name = "John Smith"

Я хочу использовать строковую функциюэто извлечет имя и фамилию в индексы массива.

$arr[0] = "John"
$arr[1] = "Smith"

Однако функция также должна иметь возможность обрабатывать ситуацию:

$full_name = "John Roberts-Smith II"
$arr[0] = "John"
$arr[1] = "Roberts-Smith II"

или

$full_name = "John"
$arr[0] = ""
$arr[1] = "John"

есть предложения, с чего начать?

Ответы [ 2 ]

3 голосов
/ 29 июля 2011

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

$full_name = "John Roberts-Smith II"

// Explode at most 2 elements
$arr = explode(' ', $full_name, 2);

// Your values:
$arr[0] = "John"
$arr[1] = "Roberts-Smith II"

Хотя ваш последний случай особенный, он помещает первое имя во второй элемент массива. Это требует специальной обработки:

// If the name contains no whitespace,
// put the whole thing in the second array element.
if (!strpos($full_name, ' ')) {
   $arr[0] = '';
   $arr[1] = $full_name;
}

Итак, полная функция:

function split_name($name) {
  if (!strpos($name, ' ')) {
    $arr = array();
    $arr[0] = '';
    $arr[1] = $name;
  }
  else $arr = explode(' ', $name, 2);

  return $arr;
}
0 голосов
/ 29 июля 2011

Для этой цели вам необходимо explode().

$name_splitted = explode(" ", "John Smith", 2);
echo $name_splitted[0]; // John
echo $name_splitted[1]; // Smith

Из документации -

взорвать массив (строка $ delimiter, строка $ string [,int $ limit])Возвращает массив строк, каждая из которых является подстрокой «string», образованной путем разбиения ее на границы, образованные строкой «delimiter».Если «limit» установлен и положителен, возвращаемый массив будет содержать максимум «limit» элементов с последним элементом, содержащим остаток строки.Если параметр «limit» отрицательный, возвращаются все компоненты, кроме последнего - «limit».Если параметр «limit» равен нулю, то он рассматривается как 1.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...