манипуляции со строками php неслучайная сортировка - PullRequest
0 голосов
/ 08 июля 2011

Я пытаюсь отсортировать 4-символьную строку, поступающую от пользователя, в другой порядок. например, они могут набрать «abcd», который я затем возьму и превратить в «bcad».

Вот пример моей попытки, которая не работает: P

<?php

$mixedDate = $_REQUEST['userDate'];

$formatted_date = firstSubString($mixedDate,2).secondSubString($mixedDate,3).thirdSubString($mixedDate,1).fourthSubString($mixedDate,4);

//... maybe some other stuff here then echo formatted_date
?>

любая помощь будет оценена.

Ответы [ 5 ]

1 голос
/ 08 июля 2011

Скопировано из комментария:

Вы можете просто сделать это, выполнив что-то вроде:

$formatted_date = $mixedDate[1].$mixedDate[2].$mixedDate[0].$mixedDate[3];

Таким образом, вам не нужно много раз вызывать метод подстроки, поскольку вы просто перемещаете отдельные символы.

1 голос
/ 08 июля 2011
<?php
$mixedDate = $_REQUEST['userDate'];

$formatted_date = $mixedDate{1}.$mixedDate{2}.$mixedDate{0}.$mixedDate{3};

echo $formatted_date;
?>

Синтаксис фигурной формы позволяет вам получить только один символ из вашей строки.

Следует отметить, что это правильно работает с вашей строкой образца abcd и превращает ее в bcadесли $_REQUEST['userDate'] равно abcd.

0 голосов
/ 08 июля 2011

Используйте str_split(), чтобы разбить строку на отдельные символы:

$char_array = str_split($input_string);

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

$output_string = $char_array[2].$char_array[3].$char_array[1].$char_array[4];


Если ваши потребности более сложны, вы можете отсортировать и взорвать строку:

Используйте sort(), чтобы упорядочить символы:

sort($char_array);

Или одна из других связанных функций сортировки, которые предоставляет PHP, если вам нужен другой порядок сортировки. Если вам нужен порядок сортировки, соответствующий вашим требованиям, вы можете использовать usort(), который позволяет написать функцию, которая определяет, как работает сортировка.

Затем заново объедините символы в одну строку, используя implode():

$output_string = implode($char_array);

Надеюсь, это поможет.

0 голосов
/ 08 июля 2011

Это очень просто.

Если

$ mixedDate = 21-12-2010

тогда попробуйте это

echo substr ($ mixedDate, 3, 2) .'- '. Substr ($ mixedDate, 0, 2) .'- '. Substr ($ mixedDate, 6);

это приведет к

12-21-2010

Предполагается, что формат является фиксированным.

0 голосов
/ 08 июля 2011

Просмотрите split () в php. Он принимает строку, а разделитель затем разбивает строку на массив. Либо заставьте пользователя использовать определенный формат, либо используйте регулярное выражение во входной строке, чтобы перевести дату в известный формат, такой как дд / мм / гггг или дд-мм-гггг, затем используйте дефис или / в качестве разделителя.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...