我一直试图让 PHP preg_replace 正常工作。我想找到一个模式的所有匹配项并将它们替换为一个字符串。但是,由于某种原因,它只找到部分匹配项并替换所有匹配项。我正在尝试从文本文件的每一行中删除“密码”。密码始终位于每行的末尾,包含 4 到 8 个字母数字字符,并且始终跟在两个竖线字符之后。
例子:
$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]
模式而不是 {#}。我试过在我的模式中添加行开始^
和结束。$
我被困住了。我知道这最终会变得很简单,我只是忽略了。这就是为什么我需要一些新的眼光。