Печать нежелательных символов с помощью PHP «preg_match»

#php #regex #preg-match

#php #регулярное выражение #preg-match

Вопрос:

Я использую PHP «preg_match». Я хочу напечатать неправильные символы в имени. Как я могу это сделать?

«preg_match» Если есть символы, отличные от разрешенных значений, я хочу напечатать нежелательные символы на экране. Какой тип добавления должен быть в приведенном ниже коде?

МОЙ код:

 <?php 
    $name = "He/llo W or_ld Test=Code";

    if( preg_match('/[^a-zA-Z ]/', $name) ){

       echo "Unavailable Characters: ";   // What changes should be made here?

    }
?>
  

Желаемый результат:

 Unavailable Characters: / _=
  

Комментарии:

1. Вы можете использовать preg_match_all, а затем распечатать коллекцию совпадений

2. @Thefourthbird Как я могу это сделать. Есть ли какой-нибудь пример?

Ответ №1:

Использовать

 $name = "He/llo W or_ld Test=Code";
if( preg_match_all('/[^a-zA-Z ]/', $name, $res) ){
  echo "Unavailable Characters: " . implode('', $res[0]);
}
  

Вывод:

 Unavailable Characters: / _=
  

Смотрите демонстрацию PHP

Примечания:

  • Используя preg_match_all , вы извлекаете все совпадения
  • Вам нужно передать третий аргумент в preg_match_all , чтобы на самом деле сохранить совпадения там (здесь, я передаю $res )
  • Вам нужен implode() $res[0] массив, содержащий значения соответствия.