PHP preg_replace を適切に動作させようとして立ち往生しています。パターンのすべての一致を見つけて、それらを文字列に置き換えたいです。しかし、何らかの理由で、部分的な一致のみを見つけて、それらすべてを置き換えています。テキスト ファイルのすべての行から「パスワード」を削除しようとしています。パスワードは常に各行の最後にあり、4 ~ 8 文字の英数字で構成され、常に 2 つのパイプ文字が続きます。
例:
$data = 'A00000001|A00000001|FirstName|LastName|email@address|Role||password'.PHP_EOL;
$data .= 'B00000002|B00000002|FirstName|LastName|email@address|Role||password'.PHP_EOL;
$delim = '|';
$newData = preg_replace("/".$delim.$delim."[a-zA-Z0-9]{4,8}/", $delim.$delim, $data);
echo $newData;
出力:
||||||1||||||||1||||||||e|||||||||||e||m||a||i| |l||@||a||d||d||r||e||s||s|||||R||o||l||e||||||||| ||| ||||||2||||||||2||||||||e|||||||||||e||m||a||i| |l||@||a||d||d||r||e||s||s|||||R||o||l||e||||||||| ||| ||
[a-zA-Z0-9]
{#} の代わりに背中合わせのパターンを入れて、括弧を使用してさまざまなグループ化で多くのバリエーションを試しました。パターンに行の開始^
と終了を追加しようとしました。$
私は立ち往生しています。これは、私が見落としている単純なものになることを知っています。だからこそ、これについて新鮮な目が必要なのです。