Как вы регулярное выражение соответствует всем, кроме содержимого переменной (PHP) - PullRequest
0 голосов
/ 21 февраля 2019

Я возвращаю некоторые данные в виде массива из таблицы mySQL, используя PHP, и мне нужно заменить некоторые значения пустыми строками.

Мне интересно, можно ли использовать регулярное выражение длясопоставлять все, кроме содержимого переменной, переменная содержит адреса электронной почты (если это имеет какие-либо шансы), а адрес электронной почты (может) появляется в каждом значении массива.

В качестве примера я бы хотел, чтобы все , за исключением"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-запроса (т. е. фильтрации значений столбцов, которые содержат интересующую меня переменную), но я не смог найти способ сделать это без написания большого количества операторов и.

Этомой текущий запрос SQL:

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

Спасибо

1 Ответ

0 голосов
/ 21 февраля 2019

Из комментариев становится ясно, что вы ищете точные совпадения, и там, где значение отклоняется, оно должно стать пустой строкой.

Итак, для данного $row:

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

Теперь отклоняющиеся адреса электронной почты были заменены пустой строкой.Сравнение не учитывает регистр, поскольку на практике регистр не имеет значения для большинства адресов электронной почты.В противном случае выполните строгое сравнение с ===.

. Здесь нет никакого смысла использовать регулярное выражение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...