2014-06-17 29 views
0

比方說,我有這個字符串爆炸去年發現PHP

One.Two_Three_Four.Five.Six_Three_Eight ... 

如何我之前所有的琴絃後最後一個「Three_」

我想用爆炸的。

+4

explode將返回一個包含4個項目的數組,除非三和四之間的'.'僅僅是一個像'.'一樣的東西,但實際上並不是一個。 –

+0

你怎麼確定'四'不存在?你做了一個'print_r($ string)'嗎? – JakeGould

回答

0

爆炸返回一個數組,所以你必須遍歷它來查看所有的值。你可以直接或使用foreach(for)來做到這一點。

$string = "One.Two.Three.Four"; 

$a = explode(".",$string); 

echo $a[0]; // One 
echo $a[1]; // Two 
echo $a[2]; // Three 
echo $a[3]; // Four 

// Or 

foreach ($a as $v){ 
    echo $v; // One, Two, Three, Four 
} 

http://php.net/manual/pt_BR/control-structures.foreach.php

如果你只想最後一個元素,你可以做這樣的事情:

echo end($a); // Four 

http://www.php.net/end

+0

這根本沒有幫助。如果字符串更長? – user3749450

+0

@ user3749450使用foreach,第一個是用於直接訪問 –

+0

我需要訪問最後一個... – user3749450

1

您可以使用array_pop()

$string = "A.B.C.D.E"; 
$a = explode(".",$string); 
array_pop($a); 
2

您可以在explode()中設置限制,但是由於您希望將其限制在最後,因此您可以執行strrev() - 因此最後一個點成爲第一個點。

$string = strrev($string); //reversed 
$data = explode(".", $string, 2); 
$data = array_map("strrev", $data); //strings in correct order 

但由於該字符串被逆轉,$data[0]現在將"four"$data[1]"one.two.three"

+0

我只是改變了我的問題,請檢查:( – user3749450

+0

@ user3749450可以'你用'_Three_'代替'.'來爆炸嗎? – kero

2

如果你想最終.後的文本,然後用這樣的:

$string = "One.Two.Three.Four"; 
$last = substr($string, strrpos($string, '.') + 1); 
echo $last; // Four 

編輯

OP把他的問題改變成完全不同的東西,但我仍然會在這裏留下。

1

另一種解決方案可能是

$parts = explode(".", $string); 
$last = array_pop($parts); 
$other = implode(".", $parts) 
0

嘗試:

$string="one.two.three.four"; 
$array = explode(".",$string); 
$last= end($array); 
echo $last; 

,如果你想八方通有數組中的最後這將這樣的伎倆。首先,將字符串分解爲一個數組,然後取出數組並使用end