【发布时间】:2013-06-26 15:40:06
【问题描述】:
我一直试图让 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] 模式而不是{#} 背靠背放置。我尝试在我的模式中添加行开始^ 和结束$。我被困住了。我知道这最终会变得很简单,我只是忽略了。这就是为什么我需要重新审视这个问题。
【问题讨论】:
标签: regex preg-replace