您如何正则表达式匹配除变量内容之外的所有内容(PHP)

时间:2019-02-21 20:20:38

标签: php arrays regex

我正在使用PHP从mySQL表中以数组形式返回一些数据,并且需要用空字符串替换一些值。

我想知道是否可以使用正则表达式来匹配除变量内容以外的所有内容,该变量包含一个电子邮件地址(如果有任何可能)和电子邮件地址(可以)出现在每个变量中数组值。

作为示例,我希望除 之外的所有内容都匹配“ email@email.com”,以便我可以用空字符串替换数组中的所有其他实例,而不用“ email”替换@ email.com”。

我已经使用字符串值和一个将'valueA'替换为'valueB'的函数实现了我想要的结果,

while循环示例,该循环从SQL查询返回数据行,以及用于测试搜索和替换的静态字符串变量。

while($row = $result->fetch_assoc()) {
    $replace = "email@email.com";        
    print_r(str_replace($replace,"",$row,$i));
    echo "Replacements: $i";

我确实想知道这是否可以通过SQL查询来实现(即过滤到包含我感兴趣的变量的列值)-但是我找不到不编写很多and语句的方法。

这是我当前的SQL查询:

$sql = ("SELECT * FROM calendar WHERE `8am` = '$currentUser' OR `9am` = '$currentUser' OR `10am` = '$currentUser'")

谢谢

1 个答案:

答案 0 :(得分:0)

从注释中可以清楚地看到您正在寻找完全匹配的内容,并且值偏离的位置应成为空字符串。

那么对于给定的$row

$replace = "email@email.com";
foreach ($row as $i => $s) {
    if (strcasecmp($s, $replace)) $row[$i] = "";
}

现在,偏离的电子邮件地址已替换为空字符串。该比较不区分大小写,因为在实践中,大多数电子邮件地址中的大小写并不重要。否则,请与===进行严格比较。

这里对于正则表达式没有什么用。