2011-07-08 28 views
0

我想排序一個4個字符的字符串是從用戶進入一個不同的順序。一個例子可能是他們鍵入「abcd」,然後我把它變成「bcad」。php字符串操作nonrandom排序

這是我嘗試它不工作的一個例子: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 
?> 

任何幫助,將不勝感激。

+0

什麼是你的第一,第二等... SubString方法?你可以很簡單地做到這一點,如:'$ formatted_date = $ mixedDate [1]。$ mixedDate [2]。$ mixedDate [0]。$ mixedDate [3];'。 – Nightfirecat

+1

我很困惑。這是假設是隨機的?但是,然後你的代碼說userDate。你想重新排列日期嗎?如果是這樣的話,你知道已經有內置於php的函數了。還記得一個字符串只是一個字符數組,所以你可以這樣操縱它。 – Matt

+0

@Matt,對不起,它不是實際的日期,它是一個電氣部分的代碼,沒有道理,但它是一個奇怪的格式製造日期。 –

回答

1

從評論複製:

你可以很簡單地做這樣的事情做到這一點:

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

這樣的話,你不必與調用子方法多次打擾,因爲你只是移動個別角色。

0

在php中查看split()。它需要一個字符串和一個分隔符,然後將字符串分割成一個數組。強制用戶使用某種格式或在輸入字符串上使用正則表達式將日期轉換爲已知格式,如dd/mm/yyyy或dd-mm-yyyy,然後使用連字符或/作爲分隔符。

將字符串拆分爲數組後,您可以按照自己的喜好重新排列字符串。

+1

給定指定的輸入,我會說'str_split()'比'split()'更合適。 (他的變量名似乎暗示了它的日期,但代碼和問題意味着它沒有任何分隔符,並且他正在處理單個字符) – Spudley

0

這很簡單。

如果

$ mixedDate = 21-12-2010

然後,嘗試此

回波SUBSTR($ mixedDate,3, 2).'-」 .substr($ mixedDate,0, 2).'-'。substr($ mixedDate,6);

這將導致

2010年12月21日

這是假設的格式是固定的。

1
<?php 
$mixedDate = $_REQUEST['userDate']; 

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

echo $formatted_date; 
?> 

曲線語法允許您從字符串中獲取這一個字符。

應當指出的是,這正常工作對您樣本串; abcd並把它變成bcad如果$_REQUEST['userDate']abcd

+0

好點,我將不得不移除那個轉換爲int的東西。我做了一個愚蠢的假設,那就是這個日期會是一個數字,比如'2011',但是沒有什麼能證明這個假設。最後的'是'本來就是一個'if',固定的感謝。 –

+1

+1瞭解OP。此外,請檢查您的最後一行,您在代碼中記錄了'userData',但是'userDate'。 –

+0

謝謝,我也修正了這一點。這是當我手工輸入而不是複製和粘貼時發生的情況!順便說一句,我沒有+1你的答案,所以我希望你的時間至少值得。 –

0

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

希望有所幫助。