我正试图排序一个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);
希望对你有帮助。