2011-06-17 15 views
7

मैं इस स्ट्रिंगपीएचपी गिनती, कोलन हर 2 वर्ण जोड़ने

1010081-COP-8-27-20110616214459 

मैं इस स्ट्रिंग के अंत से शुरू पिछले 6 अक्षर गिनती करने की जरूरत है (क्योंकि यह हो सकता है हो सकता है लंबे समय से शुरू शुरू)

है

फिर मुझे हर 2 अक्षरों के बाद कोलन जोड़ने की आवश्यकता है।

तो अंत से 6 अक्षर गिनती के बाद यह

214459 

हो जाएगा कोलन यह कैसा दिखाई देगा जोड़ा होने के बाद:

21:44:59 

तुम मुझे यह प्राप्त करने में मदद कर सकते हैं?

मुझे नहीं पता कि कहां से शुरू करना है!

धन्यवाद

उत्तर

10

आप substr, str_split और implode

कोड स्पष्टता के लिए कई पंक्तियों पर किया जाता है के साथ ऐसा कर सकते हैं, लेकिन आसानी से एक लाइन पर एक श्रृंखला में किया जा सकता है:

$str = '1010081-COP-8-27-20110616214459'; 
//Get last 6 chars 
$end = substr($str, -6); 
//Split string into an array. Each element is 2 chars 
$chunks = str_split($end, 2); 
//Convert array to string. Each element separated by the given separator. 
$result = implode(':', $chunks); 
12
echo preg_replace('/^.*(\d{2})(\d{2})(\d{2})$/', '$1:$2:$3', $string); 

ऐसा लगता है कि उस स्ट्रिंग के पास एक विशेष प्रारूप है जिसे आपको डेटा में पार्स करना चाहिए। कुछ की तरह:

sscanf($string, '%u-%3s-%u-%u-%u', $id, $type, $num, $foo, $timestamp); 
$timestamp = strtotime($timestamp); 
echo date('Y-m-d H:i:s', $timestamp); 
+0

या जैसे 'कुछ '/^(.+)(\d{2})(\d{2}) (\ d {2}) $/',' $ 2: $ 3: $ 4'' अगर वह केवल समय चाहता है। – Matthew

1

तुम सिर्फ समय चाहते हैं:

$time = rtrim(chunk_split(substr($s,-6),2,':'),':'); 
1
$final = "1010081-COP-8-27-20110616214459"; 

$c = substr($final, -2); 
$b = substr($final, -4, 2); 
$a = substr($final, -6, 2); 

echo "$a:$b:$c"; 
संबंधित मुद्दे