1

テキスト ファイルから特定の値を読み取ろうとしています。私のテキストファイルは次のようになります。

token = 12345
data = new
...

トークンの価値をキャプチャしたい。私のphpは次のとおりです。

$myFile = "../data/input.txt";
$lines = file($myFile);//file in to an array
echo $lines[0]; //line 1
preg_replace("/[^0-9]/","",$lines[0]);

出力は

トークン = 12345

しかし、私は12345だけをキャプチャしたい。番号をキャプチャした後、パスで使用する予定です..しかし、番号の前にスペースを与えます.以下のコードを調べて、何か提案があれば教えてください.

$myFile = "../data/input.txt";
$lines = file($myFile);//file in to an array
list($token, $number) = explode('=', $lines[0]);
$dir = "C:/wamp/.../$number/Profit/Jan2010";
if ($handle = opendir($dir)) {
 while (false !== ($file = readdir($handle))) {
  if ($file != "." && $file != "..") {
   echo "<a href=".$dir."/".$file.">$file</a><br/>";
  }
 }
closedir($handle);

私のパスは .../12345/Profit/Jan2010 です。上記のコードを使用すると、..../ 12345/Profit/Jan2010 (12345 の前のスペース) が得られます。パスに $number を使用できますか? 前もって感謝します

4

2 に答える 2

2

preg_replaceの出力を適切に使用していないようです。

数値は実際に格納されて$lines[0];いますが、変数に格納するのではなく、エコーしているだけです。

以下が機能するはずです。

$number = preg_replace("/[^0-9]/","",$lines[0]);
echo $number;

または、explode()(場合によってはもう少し効率的かもしれません) を使用して、文字列を区切り文字で分割することもできます。

list($token,  $number) = explode('=', $lines[0]);
echo (int) $number;

アップデート

私のパスは .../12345/Profit/Jan2010 です。上記のコードを使用すると、..../ 12345/Profit/Jan2010 (12345 の前のスペース) が得られます。

これはおそらく、 の空白が原因です$numbertrimそれを削除するには、次のように使用できます。

$number = trim($number);

または、区切り文字にスペースを含めます。

list($token, $number) = explode(' = ', $lines[0]);

デモ!

于 2013-09-23T18:27:34.287 に答える
0

すでに使用した 12345 のみが表示されるはずです

最後の行の前にエコーを使用するだけです

echo preg_replace("/[^0-9]/","",$lines[0]);
于 2013-09-23T18:37:14.007 に答える