我使用PHP从一个mySQL表中以数组的形式返回一些数据,并且需要用空字符串替换一些值。
我想知道是否有可能使用正则表达式来匹配除变量内容之外的所有内容,变量包含一个电子邮件地址(如果有任何可能性的话),并且电子邮件地址(can)出现在每个数组值中。
例如,我希望匹配除 "email@email.com“之外的所有,这样我就可以将数组中的所有其他实例替换为空字符串,而不是"email@email.com”。
我已经使用一个字符串值和一个将'valueA‘替换为'valueB’的函数实现了我想要的结果,但到目前为止还没有使用变量。
从SQL查询返回数据行的while循环示例,以及我用来测试搜索和替换的静态字符串变量。
while($row = $result->fetch_assoc()) {
$replace = "email@email.com";
print_r(str_replace($replace,"",$row,$i));
echo "Replacements: $i";
我确实想知道SQL查询是否可以做到这一点(即过滤包含我感兴趣的变量的列值)-但我找不到一种方法来做到这一点,而不是编写大量的和语句。
这是我当前的SQL查询:
$sql = ("SELECT * FROM calendar WHERE `8am` = '$currentUser' OR `9am` = '$currentUser' OR `10am` = '$currentUser'")
谢谢
发布于 2019-02-22 04:36:24
从注释中可以清楚地看出,您正在寻找完全匹配的内容,当一个值偏离时,它应该变成一个空字符串。
因此,对于给定的$row
$replace = "email@email.com";
foreach ($row as $i => $s) {
if (strcasecmp($s, $replace)) $row[$i] = "";
}
现在,不同的电子邮件地址已替换为空字符串。这种比较是不区分大小写的,因为在实践中,大小写在大多数电子邮件地址中并不重要。否则,与===
进行严格的比较。
正则表达式在这里没有很好的用处。
https://stackoverflow.com/questions/54815601
复制相似问题