2012-05-01 32 views
0

我成功從字符串中提取整數。如何從字符串和選定的字母只提取整數?

如何做,但包括字符串:「K」,「M」和「B」?

這段代碼使用特定網站的代碼和提取物的數字,我需要的數字和 「K」, 「M」 和 「b」

$objectId = 15259; 
$lines = file('http://testwebsite.com?obj=' . $objectId); 
foreach ($lines as $line_num => $line) { 
    $lineCrawl = htmlspecialchars($line); 
    $stringSum = "$stringSum$lineCrawl"; 
} 

function get_string_between($string, $start, $end){ 
    $string = " ".$string; 
    $ini = strpos($string,$start); 
    if ($ini == 0) return ""; 
    $ini += strlen($start); 
    $len = strpos($string,$end,$ini) - $ini; 
    return substr($string,$ini,$len); 
} 

$parsed = get_string_between($stringSum, "Current guide price", "Today"); 

$guideprice = ereg_replace("[^0-9]", "", $parsed); 

echo $guideprice; 
+0

因此,未來的SO讀者可以完全理解你的任務,請求通過提供一個或多個輸入字符串和您的預期輸出,爲此問題添加上下文。 – mickmackusa

回答

1

變化0-90-9kmb應該工作

+0

沒有昏迷,只需[0-9kmb]。否則,昏迷也會被消除。 – mpratt

+0

我會編輯我的帖子,好點。 –

+0

雖然這個答案可能已經解決了這個問題,但它對於未來的SO讀者來說並沒有什麼作用。請通過提供一些支持信息,文檔參考和/或解釋來改進您的答案。我知道這是一個簡單的答案,但是這個問題可能與未來的重複頁面相關聯,並且這些讀者可能想要了解_爲什麼這個答案是正確的。 – mickmackusa

0

更改代碼,以更好地利用正則表達式:

<? //PHP 5.4+ 
$matches = []; 
\preg_match(
    <<<'REGEX' 
`(?x) 
    Current \s guide \s price 
    \D* (?<price> \d+ [kmb] \s) 
    Today 
`u 
REGEX 
, \file_get_contents('http://testwebsite.com?obj=' . 15259), 
    $matches 
); 
echo $matches['price']; 
?> 
+0

有什麼區別嗎?從來沒有聽說過REGEX –

+0

雖然'get_string_between()'與'ereg_replace()'並且使用'preg_match()'是一個明智的選擇(最佳實踐),但我相信你的模式不會成功。如果OP更新問題以顯示一些示例輸入,則應發佈更好的模式。 – mickmackusa

相關問題