2014-03-04 50 views
-1

請問一些有用的人請告訴我如何提取字符串的特定部分?他們通常是這樣的:PHP/MySQL提取字符串中特定的一段文字

Includes USD39 bundled airtime, 30 SMSs and 50MB data. 
Includes USD200 bundled airtime, 110 SMSs and 450MB data. 
Includes USD399 bundled airtime, 500 SMSs and 650MB data. 

我所想的就是顯示每個字符串的

USD39 bundled airtime 
USD200 bundled airtime 
USD399 bundled airtime 

件。

我知道這將是痛苦容易在這裏幾乎任何人,所以道歉:d希望我可以問一個更具挑戰性的問題1天..

+3

你能發表你試過的嗎? –

+1

try preg_replace(「/ Includes(。*),。* /」,「$ 1」,$ str); – Nambi

+0

這個問題爲什麼會降低投票率? – 2cent

回答

0
SELECT SUBSTRING(sentence,LOCATE(' ',sentence),LOCATE(' ',sentence,(LOCATE(' ',sentence)+1))-LOCATE(' ',sentence)) 

FROM(SELECT「包括USD39捆綁通話時間,30短信和50MB數據'AS句子)temp

這應該提取USD39,但它沒有被檢查。希望這可以幫助您獲得不同的美元價值,因爲第三和第四個價值在每個聲明中都是相同的。

希望這有助於!

+0

將邏輯保留在PHP代碼中而不是Mysql查詢本身會更好。 –

1

正則表達式岩石!

$str = 'Includes USD39 bundled airtime, 30 SMSs and 50MB data.'; 
$matches = array(); 
preg_match('/ USD\d+ bundled airtime/i', $str, $matches); 
echo '<pre>', print_r($matches, 1), '</pre>'; 

// more complex: 
$matches = array(); 
preg_match('/ (USD\d+ [^,]+),/i', $str, $matches); 
echo '<pre>', print_r($matches, 1), '</pre>'; 

// another way: 
$matches = array(); 
preg_match('/^Includes ([^,]+),/i', $str, $matches); 
echo '<pre>', print_r($matches, 1), '</pre>'; 
-1

嘗試這樣做

echo substr("Hello world",1,8); 

同樣制定你的答案。 (這是一個php函數,希望它有幫助。)否則,正則表達式將是關鍵。

+0

這不是OP想要的。 –