0

delete0、などの名前の送信タイプの入力ボタンの潜在的に非常に大きなリストがありdelete1、配列内のクリックされたボタンと一致させ、追加された番号を引き出すdelete2ために使用しようとしているので、その番号をから削除できますmysqlテーブル。preg_match$_POST

問題は、preg_matchそうあるべきだと思われるときに、私が貪欲に行動していないことです。たとえば、ボタンを使用して送信すると、の一致が得られ、delete13の一致が得られます。delete1delete23delete2

以下は私のパターンとロジックです。

$pattern = "/,?(delete)(\d)+,?/";
$allpostkeys = implode(",", array_keys($_POST));
echo "<br />" . $allpostkeys . "<br />";
if (preg_match($pattern, $allpostkeys, $matches))
{
    echo "<br />You elected to delete row: " . $matches[2];
    $rowToDelete = $matches[2];
}
4

2 に答える 2

0

小さな修正:

/,?(delete)(\d+),?/

繰り返されているパターンでキャプチャしている(\d)+ので、最後の繰り返しのサブストリングのみをキャプチャグループ(1桁)に残す必要があります。数字のすべての繰り返し(\d+)を含む部分文字列をキャプチャします。

さらなる改善として、最初のキャプチャグループは必要ありません。

/,?delete(\d)+,?/

だからあなたは後の番号を参照することができdeleteますmatches[1]

于 2013-01-27T08:58:14.493 に答える
0

変化する

$pattern = "/,?(delete)(\d)+,?/";

の中へ

$pattern = "/,?(delete)(\d+),?/";
于 2013-01-27T09:00:13.600 に答える