2013-12-23 37 views
0

,當我讀到一個數組,我得到的值設定這樣"lat" : -37.8087928,刪除不想要的字符。我只想要-37.8087928部分。什麼是正確的方式來做到這一點。如何從字符串中PHP

我做了這樣:

$value = '"lat" : -37.8087928,'; 
$ex = explode(':', $value); 

$ex2 = explode(',', $ex[1]); 

最終resualt $ex2[0]

這是正確的或者什麼是正確的方法,謝謝大家

+1

您是否得到正確的結果?那麼這是正確的方法。 (儘管在字符串的開頭可能有空白問題) – h2ooooooo

+0

當然,有更簡單的方法:例如preg_match() –

+0

這看起來像JSON。如何獲得數組,首先是因爲可能比提取JSON字符串然後將其作爲字符串進行操作要簡單得多。 – Popnoodles

回答

1
$value = '"lat" : -37.8087928,'; 
$final_value = preg_replace("/[^0-9.\-]/", "", $value); 

上面的代碼將剝離不在數字,圓點或連字符的所有字符。

0

你可以刪除字符串中的所有空格

$stingname=" test manish "; 

    str_replace(" ","",$stingname); 

    echo $stingname; 

結果

testmanish 
+0

這並不回答具體問題 – Popnoodles

+0

通過爆炸是最好的方法 –

0

說的對象符號。你可能想嘗試

$locations = json_decode($value) 

,那麼你可以像這樣訪問:

echo $locations->lat; // prints -37.8087928 

,如果你不想做,你可以這樣做:

$locationArray = explode($value, ':'); // returns [0: 'lat', 1: -37.8087928] 
echo trim($locationArray[1]); // prints -37.8087928. trim to get rid of whitespace 
0

沒有問題在你的方法中。但你也可以使用這更容易理解:

$value = '"lat" : -37.8087928,'; 
echo $float = filter_var($value, FILTER_SANITIZE_NUMBER_FLOAT,FILTER_FLAG_ALLOW_FRACTION); 

希望這對你有所幫助!

你可以閱讀更多關於它here

+0

這產生了錯誤的結果(32)。儘管FILTER_SANITIZE_NUMBER_FLOAT提供了預期的輸出,但使用filter_var是一個混亂的解決方案 - 它是一個功能遠不清晰的黑盒子。 – symcbean

+0

Plz see編輯答案.. –

0

正確的方法取決於輸入字符串的變化 - 「像這樣的」不充分的解釋。

解析器就足夠了 - 但有沒有錯誤處理,也不應對不同格式的字符串的任何手段。使用jorge描述的正則表達式更加健壯,但可能無法應付某些輸入場景。

您所提供的輸入字符串看起來非常像JSON - 在這種情況下,你應該使用JSON解析器 - PHP提供了一個非常好的一個內置的 - 這將直接拒絕不符合的輸入。

0

人們暗示正則表達式的和爆炸,爲什麼呢?這很慢並且不需要。如果你有一個固定的字符串,可以用一些字符串函數做到這一點:

$value = '"lat" : -37.8087928,'; 
$result = trim(substr($value, strpos($value,":")+1)), " ,"); 

這是通過在該字符串找到:和它。減去直到結束。然後用修剪刪除空格和逗號。如果逗號總是在那裏,則可以執行此操作,並刪除修剪:

$result = substr($value, strpos($value,":")+1), -1);// till -1 from the end