2012-05-01 29 views
0

文字列から整数を正常に抽出しています。文字列と選択された文字から整数だけを抽出する方法は?

"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

将来の読者があなたの仕事を完全に理解できるように、嘆願seは、1つまたは複数の入力文字列と期待される出力を提供することによって、この質問にコンテキストを追加します。 – mickmackusa

答えて

1

数字と "K"、 "M" と "b" を必要とする変更0-90-9kmb

+0

昏睡状態がなければ、ちょうど[0-9kmb]。そうでなければ、昏睡状態も取り除かれます。 – mpratt

+0

私は自分の投稿、良い点を編集します。 –

+0

この回答がこの問題を解決したかもしれませんが、将来の読者にはほとんど情報がありません。サポート情報、ドキュメントリファレンス、および/または説明を提供して、回答を改善してください。私はそれが簡単な答えだと知っていますが、この質問は将来重複するページにリンクされている可能性があり、読者はこの答えが正しいと理解したいかもしれません。 – 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

関連する問題