PHP字符串操作非随机排序


php string manipulation nonrandom sort

我正试图排序一个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
?>

摘自注释:

你可以简单地这样做:

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

这样,您就不必多次调用子字符串方法,因为您只需移动单个字符即可。

<?php
$mixedDate = $_REQUEST['userDate'];
$formatted_date = $mixedDate{1}.$mixedDate{2}.$mixedDate{0}.$mixedDate{3};
echo $formatted_date;
?>

花括号语法允许您从字符串中获取一个字符。

应该注意的是,这在您的示例字符串abcd上正确工作,如果$_REQUEST['userDate']abcd,则将其转换为bcad

查看php中的split()方法。它接受一个字符串和一个分隔符,然后将字符串分割成一个数组。要么强制用户使用某种格式,要么在输入字符串上使用正则表达式将日期转换为已知格式,如dd/mm/yyyy或dd-mm-yyyy,然后使用连字符或/作为分隔符。

一旦字符串被分割成一个数组,你可以按照你喜欢的方式重新排列它。

这很简单。

如果

$mixedDate = 21-12-2010

那么,试试这个

echo substr($mixedDate, 3,2)。"-"。substr (mixedDate美元02)。"-"。substr (mixedDate美元,6);

这将导致

12-21-2010

使用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);

希望对你有帮助。