2

私はここで広範囲に検索しましたが、私の問題(php)の解決策はありません。

シナリオ:ユーザーが事前に割り当てられた登録番号(datafile.txt内)を使用してログインページにアクセスし、フィールドに番号を入力すると、スクリプトは番号が存在する場合はファイルを検索します。

存在する場合は、次の手順に進みます。次のステップが完了したら、一度実行した元の番号を自動的に「削除」したいと思います。

「完全に一致する」ものを検索しながら、「検索して置換」するのが道だと思います。

私のデータファイルは次のようになります:(datafile.txt)

0
12
123
1234
12345
123456

12、検索した場合、123と同じにはなりません。

数日前に私がとても親切に与えられたスクリプトは、別のタスクを実行するためのものです。

$numbers = file_get_contents("datafile.txt");

$uNumber = $_POST['uNum'];

if ( @preg_match( "/([^0-9]{$uNumber}[^0-9])/", $numbers ) ) {

echo "Numbers match";

}

私が新しいタスクのためにやろうとしたことは次のとおりでしたが、成功しませんでした。

$numbers = file_get_contents('datafile.txt', 'w+');

$uNumber = $_POST['uNum'];

if ( @preg_match( "/([^0-9]{$uNumber}[^0-9])/", $numbers ) ) {

$numbers = preg_replace('.$_Post["uNum"]','',$numbers);

echo "Existed but will be deleted from file. ";


} else {
echo "Message showed if not in file.";
}

どんな助けでも大歓迎です。

4

3 に答える 3

1

これはどう:

$index = file_get_contents("datafile.txt"); 
$bodycont = str_replace("string to be replaced","what you want that string to be",$index);
$fh = fopen("datafile.txt","w");
fwrite($fh,$bodycont);
fclose($fh); 

また:

 $file = file("datafile.txt", FILE_IGNORE_NEW_LINES);
 foreach($file as $text) {
 $test[] = $text;
 }

//get the size of the array

$arraysize = sizeof($test);

//use for loop to check if that string is found in the array and replace it

for($x=0;$x<$arraysize;$x++)
    {
               if($test[$x] == "$uNumber")
                {

                }
                else
                {
                   $newarray[] = $test[$x];
                }
    }
 $stringData = implode("\n",$newarray );
 $fh = fopen("datafile.txt","w");
 fwrite($fh,$stringData );
 fclose($fh);

これはどういうわけかうまくいくはずです。:D

于 2012-05-28T21:11:04.830 に答える
0

なぜこんなに単純なものに正規表現を使うのですか?あなたはちょうどこのように行くことができます:

<?php
$numbers = file_get_contents("datafile.txt");
$uNumber = $_POST['uNum'];

$numbers = explode($numbers, "\n");

foreach ($numbers as $num) {
     if ($num == $uNumber) {
         unset($num);
     }
}

$numbers = implode($numbers, "\n");

// some code that saves the file
?>
于 2012-05-28T19:59:24.737 に答える
0

1行のファイルに1つの番号である場合は、とを使用^$て、正確なパターンに一致するように正規表現を制限します。

preg_match( "/^({$uNumber})$/", $numbers)
于 2012-05-28T19:33:55.743 に答える