Php удалять регулярное выражение

Содержание
  1. Как удалить все буквы, цифры и спецсимволы в строке на PHP/JavaScript?
  2. Как удалить все буквы, цифры и спецсимволы в строке на PHP?
  3. Как удалить все буквы, цифры и спецсимволы в строке на JavaScript?
  4. preg_replace
  5. Список параметров
  6. Возвращаемые значения
  7. Ошибки
  8. Список изменений
  9. Примеры
  10. Примечания
  11. Смотрите также
  12. Удаление регулярными выражениями в PHP
  13. Текст и символы
  14. Удалить все пробелы
  15. Удалить двойные пробелы
  16. Удалить лишние пробелы перед знаками препинания
  17. Оставить в тексте только буквы, цифры и пробел
  18. Удалить цифры
  19. Удалить латинские буквы
  20. Удалить русские буквы
  21. Удалить все буквы и цифры
  22. Удалить все кроме цифр и пробелов
  23. Удалить табуляцию
  24. Удалить переносы строк
  25. Удалить определенное количество символов
  26. Удалить текст до определенного символа
  27. Удалить текст после символа
  28. Удалить скобки с их содержимым
  29. Комментарии
  30. Удалить комментарии из HTML
  31. Удаление многострочных комментариев «/* . */»
  32. Удалить комментарии «//» и «#»
  33. Комментарии SQL « —. »
  34. Нумерация строк
  35. Хештеги

Как удалить все буквы, цифры и спецсимволы в строке на PHP/JavaScript?

Этот своего рода вариант обрезки строки будет полезен, когда вы хотите получить информацию в определенном виде. Например, ник пользователя может быть только из букв, когда как его возраст – указывается числом.

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

Как удалить все буквы, цифры и спецсимволы в строке на PHP?

В PHP для удаления нужных символов мы воспользуемся функцией «preg_replace», с помощью которой по регулярному выражению найдем и удалим нужные нам символы.

Реализация для удаления всех букв:

Реализация для удаления всех цифр:

Реализация для удаления спецсимволов:

 ', '|', ':', '"', '', '?', '[', ']', ';', "'", ',', '.', '/', '', '~', '`', '='); $new_content = str_replace($code_match, '', $content); echo $new_content; // Выведет "12 Hello 3 world 45" ?>

В таком случае удаляются символы «! @ # $ % ^ & * ( ) _ + < >| : » ? [ ] ; ‘ , . / — ~ ` =».

Читайте также:  Где лучше программировать на python

Как удалить все буквы, цифры и спецсимволы в строке на JavaScript?

В JavaScript мы воспользуемся аналогичной функцией «replace», с помощью которой также по регулярному выражению удалим нужные нам символы.

Реализация для удаления всех букв:

   

Реализация для удаления всех цифр:

   

Реализация для удаления спецсимволов:

   

Если вдруг при использовании какого-либо способа у вас возникают трудности – пишите об этом в комментариях.

Источник

preg_replace

Выполняет поиск совпадений в строке subject с шаблоном pattern и заменяет их на replacement .

Список параметров

Искомый шаблон. Может быть как строкой, так и массивом строк.

Также доступны некоторые модификаторы PCRE, включая устаревший ‘e‘ (PREG_REPLACE_EVAL), специфичный только для этой функции.

Строка или массив строк для замены. Если этот параметр является строкой, а pattern является массивом, все шаблоны будут заменены этой строкой. Если и pattern и replacement являются массивами, каждый элемент pattern будет заменен соответствующим элементом из replacement . Если массив replacement содержит меньше элементов, чем массив pattern , то все лишние шаблоны из pattern будут заменены пустыми строками.

replacement может содержать ссылки вида \\ n , либо (начиная с PHP 4.0.4) $ n , причем последний вариант предпочтительней. Каждая такая ссылка будет заменена на подстроку, соответствующую n -ой подмаске. n может принимать значения от 0 до 99, причем ссылка \\0 (либо $0) соответствует вхождению всего шаблона. Подмаски нумеруются слева направо, начиная с единицы. Для использования обратного слеша, его необходимо продублировать (строка PHP «\\\\»).

При замене по шаблону с использованием ссылок на подмаски может возникнуть ситуация, когда непосредственно за маской следует цифра (например, установка цифры сразу после совпавшей маски). В таком случае нельзя использовать знакомую нотацию вида \\1 для ссылки на подмаски. Запись, например, \\11, смутит preg_replace() , так как она не сможет понять, хотите ли вы использовать ссылку \\1, за которой следует цифра 1 или же вы хотите просто использовать ссылку \\11, за которой ничего не следует. Это недоразумение можно устранить, если воспользоваться конструкцией \$1, использующей изолированную ссылку $1, и следующую за ней цифру 1.

При использовании устаревшего модификатора e эта функция экранирует некоторые символы (а именно , «, \ и NULL) в строках, замещающих обратные ссылки. Это сделано для удостоверения корректности синтаксиса при использовании обратных ссылок внутри одинарных или двойных кавычек (например, ‘strlen(\’$1\’)+strlen(«$2»)’). Убедитесь, что вы владеете синтаксисом обработки строк PHP для того, чтобы точно осознавать, как будет выглядеть интерпретированная строка.

Строка или массив строк для поиска и замены.

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

Максимально возможное количество замен каждого шаблона для каждой строки subject . По умолчанию равно -1 (без ограничений).

Если указана, то эта переменная будет заполнена количеством произведенных замен.

Возвращаемые значения

preg_replace() возвращает массив, если параметр subject является массивом, иначе возвращается строка.

Если найдены совпадения, возвращается новая версия subject , иначе subject возвращается нетронутым, в случае ошибки возвращается NULL .

Ошибки

При использовании устаревшего модификатора «\e» бросается ошибка уровня E_DEPRECATED .

Список изменений

Версия Описание
5.5.0 Модификатор /e теперь считается устаревшим. Используйте функцию preg_replace_callback() . Смотрите документацию PREG_REPLACE_EVAL с дополнительной информацией и описанием проблем с безопасностью.
5.1.0 Добавлен параметр count

Примеры

Пример #1 Использование подмасок, за которыми следует цифра

$string = ‘April 15, 2003’ ;
$pattern = ‘/(\w+) (\d+), (\d+)/i’ ;
$replacement = ‘$1,$3’ ;
echo preg_replace ( $pattern , $replacement , $string );
?>

Результат выполнения данного примера:

Пример #2 Использование массивов с числовыми индексами в качестве аргументов функции preg_replace()

$string = ‘The quick brown fox jumped over the lazy dog.’ ;
$patterns = array();
$patterns [ 0 ] = ‘/quick/’ ;
$patterns [ 1 ] = ‘/brown/’ ;
$patterns [ 2 ] = ‘/fox/’ ;
$replacements = array();
$replacements [ 2 ] = ‘bear’ ;
$replacements [ 1 ] = ‘black’ ;
$replacements [ 0 ] = ‘slow’ ;
echo preg_replace ( $patterns , $replacements , $string );
?>

Результат выполнения данного примера:

The bear black slow jumped over the lazy dog.

Отсортировав по ключам шаблоны и замены, получаем желаемый результат:

ksort ( $patterns );
ksort ( $replacements );
echo preg_replace ( $patterns , $replacements , $string );
?>

Результат выполнения данного примера:

The slow black bear jumped over the lazy dog.

Пример #3 Замена по нескольким шаблонам

Результат выполнения данного примера:

Пример #4 Чистка пробелов

Этот пример вычищает лишние пробелы в строке.

$str = ‘foo o’ ;
$str = preg_replace ( ‘/\s\s+/’ , ‘ ‘ , $str );
// Это теперь будет ‘foo o’
echo $str ;
?>

Пример #5 Использование параметра count

echo preg_replace (array( ‘/\d/’ , ‘/\s/’ ), ‘*’ , ‘xp 4 to’ , — 1 , $count );
echo $count ; //3
?>

Результат выполнения данного примера:

Примечания

Замечание:

При использовании массивов в pattern и replacement , ключи обрабатываются в том порядке, в котором они находятся в массиве. Этот порядок не всегда совпадает с числовым порядком индексов. Если вы используете индексы для сопоставления друг с другом нужного pattern и replacement , то вам необходимо прогнать через функцию ksort() оба массива перед использованием preg_replace() .

Смотрите также

  • «Регулярные выражения PCRE»
  • preg_quote() — Экранирует символы в регулярных выражениях
  • preg_filter() — Производит поиск и замену по регулярному выражению
  • preg_match() — Выполняет проверку на соответствие регулярному выражению
  • preg_replace_callback() — Выполняет поиск по регулярному выражению и замену с использованием callback-функции
  • preg_split() — Разбивает строку по регулярному выражению
  • preg_last_error() — Возвращает код ошибки выполнения последнего регулярного выражения PCRE

Источник

Удаление регулярными выражениями в PHP

Примеры регулярных выражений для удаления данных из текста.

Текст и символы

Удалить все пробелы

$text = 'a b c d e'; $text = mb_ereg_replace('[\s]', '', $text); echo $text; // abcde

Удалить двойные пробелы

$text = 'a b c d e'; $text = mb_ereg_replace('[ ]+', ' ', $text); echo $text; // a b c d e

Удалить лишние пробелы перед знаками препинания

$text = 'Многие ! известные ? личности , и по сей день .'; echo preg_replace("/\s+([\.|,|!|\?]+)/", '\\1',$text);
Многие! известные? личности, и по сей день.

Оставить в тексте только буквы, цифры и пробел

$text = 'Многие известные. личности, по: сей день.'; echo mb_eregi_replace("[^a-zа-яё0-9 ]", '', $text);
Многие известные личности по сей день

Удалить цифры

$text = 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя abcdefghijklmnopqrstuvwxyz 0123456789'; echo mb_eregi_replace('2', '', $text);
абвгдеёжзийклмнопрстуфхцчшщъыьэюя abcdefghijklmnopqrstuvwxyz

Удалить латинские буквы

$text = 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя abcdefghijklmnopqrstuvwxyz 0123456789'; echo mb_eregi_replace('[a-z]', '', $text);
абвгдеёжзийклмнопрстуфхцчшщъыьэюя 0123456789

Удалить русские буквы

$text = 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя abcdefghijklmnopqrstuvwxyz 0123456789'; echo mb_eregi_replace('[а-яё]', '', $text);

Удалить все буквы и цифры

$text = 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя abcdefghijklmnopqrstuvwxyz 0123456789 . '; echo mb_eregi_replace('[\w]', '', $text);

Удалить все кроме цифр и пробелов

$text = 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя abcdefghijklmnopqrstuvwxyz 0123456789 . '; echo mb_eregi_replace('[^0-9 ]', '', $text);

Удалить табуляцию

Удалить переносы строк

echo preg_replace("/[\r\n]/", '', $text);

Удалить определенное количество символов

Примеры удаляют девять символов в начале и конце текста.

// Удаление с начала $text = mb_eregi_replace("^.(.*)$", '\\1', $text); echo $text; // Удаление с конца $text = mb_eregi_replace("(.*)[^.]$", '\\1', $text); echo $text;

Удалить текст до определенного символа

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

$text = 'Многие известные. личности, по: сей - день.'; // Удалить до пробела echo preg_replace("/^(.*?)(\s)(.*?)$/", '\\3', $text); // Удалить до "." echo preg_replace("/^(.*?)(\.\s)(.*?)$/", '\\3', $text); // Удалить до "," echo preg_replace("/^(.*?)(,\s)(.*?)$/", '\\3', $text); // Удалить до ":" echo preg_replace("/^(.*?)(:\s)(.*?)$/", '\\3', $text); // Удалить до "-" echo preg_replace("/^(.*?)(-\s)(.*?)$/", '\\3', $text);
известные. личности, по: сей - день. личности, по: сей - день. по: сей - день. сей - день. день.

Удалить текст после символа

$text = 'Многие известные. личности, по: сей - день.'; // Удалить после пробела echo preg_replace("/^(.+?)\s.+$/", '\\1', $text); // Удалить после «.» echo preg_replace("/^(.+?)\..+$/", '\\1', $text); // Удалить после «,» echo preg_replace("/^(.+?),.+$/", '\\1', $text); // Удалить после «:» echo preg_replace("/^(.+?):.+$/", '\\1', $text); // Удалить после «-» echo preg_replace("/^(.+?)-.+$/", '\\1', $text);
Многие Многие известные Многие известные. личности Многие известные. личности, по Многие известные. личности, по: сей

Удалить скобки с их содержимым

$text = '(Casio G-SHOCK) [GW-9200-1ER] '; // Удаление (. ) echo preg_replace("/(.*?)\(.*?\)\s?(.*?)/is", '\\1\\3', $text); // Удаление [. ] echo preg_replace("/(.*?)\[.*?\]\s?(.*?)/is", '\\1\\3', $text); // Удаление echo preg_replace("/(.*?)\<.*?\>\s?(.*?)/is", '\\1\\3', $text); // Удаление [. ] echo preg_replace("/(.*?)<.*?>\s?(.*?)/is", '\\1\\3', $text);

Комментарии

Удалить комментарии из HTML

$text = '

Текст текст

'; echo preg_replace('/\s?\s?/', ' ', $text);

Удаление многострочных комментариев «/* . */»

$text = " /** * Описание функции и тд * @param name * @param defaultValue * @returns */ document.write(' '); "; echo preg_replace("/\/\*(.*?)\*\//sm", '', $text);

Удалить комментарии «//» и «#»

$text = " // По возрастанию: ksort($array); # По убыванию: krsort($array);"; $res = preg_replace("/\/\/.*\n/", '', $text); $res = preg_replace("/#.*\n/", '', $res); echo $res;

Комментарии SQL « —. »

$text = " SELECT * FROM `articles` WHERE `name` LIKE '%KEY%' -- OR `title` LIKE '%KEY%' OR `text` LIKE '%KEY%'"; echo preg_replace("/\s--.*\n/", '', $text);
SELECT * FROM `articles` WHERE `name` LIKE '%KEY%' OR `text` LIKE '%KEY%'

Нумерация строк

$text = ' 1 text text text. 2 text text text. 3 text text text. 1. text text text. 2. text text text. 3. text text text. 1) text text text. 2) text text text. 3) text text text.'; echo preg_replace('/(\d)+(\.|\)|\s)+([\s]?)+(.*)/', '\\4', $text);
text text text. text text text. text text text. text text text. text text text. text text text. text text text. text text text. text text text.

Хештеги

$text = 'broken beat, nu jazz, downtempo #nujazz, #downtempo, #intelligent'; echo preg_replace('/#([\S]+)/', '', $text);
broken beat, nu jazz, downtempo 

Источник

Оцените статью