PHP正则表达式删除点之前的前置内容

PHP正则表达式删除点之前的前置内容,php,regex,preg-replace,Php,Regex,Preg Replace,我在PHP中有一个数组字符串,其中包含以下内容: $a = array( array('inner' => 'N.person = P.id'), array('inner' => 'L.person = P.id'), array('left' => 'A.person = P.id AND A.excluded IS NULL') ); $x = someFunctionThatSanitizeSQL('P.id', $a); 我想通知主键p.id,并从s

我在PHP中有一个数组字符串,其中包含以下内容:

$a = array(
  array('inner' => 'N.person = P.id'),
  array('inner' => 'L.person = P.id'),
  array('left' => 'A.person = P.id AND A.excluded IS NULL')
);
$x = someFunctionThatSanitizeSQL('P.id', $a); 
我想通知主键
p.id
,并从sql中删除所有别名,结果如下:

$a = array(
  array('inner' => 'N.person = P.id'),
  array('inner' => 'L.person = P.id'),
  array('left' => 'A.person = P.id AND A.excluded IS NULL')
);
$x = someFunctionThatSanitizeSQL('P.id', $a); 
打印
$x
结果:

array(
  array('inner' => 'person = :pk'),
  array('inner' => 'person = :pk'),
  array('left' => 'person = :pk AND excluded IS NULL')
);
提前谢谢


@编辑:在执行
str_replace($pkreplace,':pk',$mystring)后错过一个输入错误

,我想你要找的正则表达式是:

/(?=(^|\w))[A-Z0-9_-]+\./
例如,要清除每个字符串,可以执行以下操作

preg_replace('/(?=(^|\w))[A-Z0-9_-]+\./i', '', $mystring);
但是,如果要删除
A.
L.
等,则查询可能会出现其他问题,因为这些值不再位于数据库表下,并且可能会导致不明确的值错误。您确定这是您在查询中想要的行为吗

编辑

函数的最终实现如下所示(假设需要数组):


是的,我确信这种行为!因为每个查询都将在您的范围内被隔离。我将实现你的正则表达式。谢谢你!你的正则表达式非常合身