首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用正则表达式匹配除变量内容以外的所有内容(PHP)

如何使用正则表达式匹配除变量内容以外的所有内容(PHP)
EN

Stack Overflow用户
提问于 2019-02-22 04:20:38
回答 1查看 48关注 0票数 0

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

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

例如,我希望匹配除 "email@email.com“之外的所有,这样我就可以将数组中的所有其他实例替换为空字符串,而不是"email@email.com”。

我已经使用一个字符串值和一个将'valueA‘替换为'valueB’的函数实现了我想要的结果,但到目前为止还没有使用变量。

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

代码语言:javascript
复制
while($row = $result->fetch_assoc()) {
    $replace = "email@email.com";        
    print_r(str_replace($replace,"",$row,$i));
    echo "Replacements: $i";

我确实想知道SQL查询是否可以做到这一点(即过滤包含我感兴趣的变量的列值)-但我找不到一种方法来做到这一点,而不是编写大量的和语句。

这是我当前的SQL查询:

代码语言:javascript
复制
$sql = ("SELECT * FROM calendar WHERE `8am` = '$currentUser' OR `9am` = '$currentUser' OR `10am` = '$currentUser'")

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-22 04:36:24

从注释中可以清楚地看出,您正在寻找完全匹配的内容,当一个值偏离时,它应该变成一个空字符串。

因此,对于给定的$row

代码语言:javascript
复制
$replace = "email@email.com";
foreach ($row as $i => $s) {
    if (strcasecmp($s, $replace)) $row[$i] = "";
}

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

正则表达式在这里没有很好的用处。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54815601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档