Как в PHP заменить символ – лекарство от амнезии
Замена символов в строке
В примере меняю букву в на ф, теперь вопрос:
Как можно изменить зная не букву, а место на котором стоит буква, например изменить нужно букву которая стоит на 4 месте.
Добавлено через 3 часа 41 минуту
Вобщем то вот- этот код отработал, заменил 4 букву (ну если с нуля отсчитывать то 3 букву) на букву «f»
Это нормально, мне так и нужно, но мне нужно чтобы он в русском слове «Привет»- заменил! А он нехотит.
Как этот код переделать то чтоб с русским словом работал?
Добавлено через 9 минут
И еще пример, и этот код отработал как надо! Но только с английским словом!
Ни как неработают функции с русскими словами, более половины наверное таких нерабочих! (((
Замена символов в строке на слово
Есть строка из 50 символов, на 5 символе нужно вставить слово(не один символ, а именно слово), как.
Замена символов в строке с условием
Всем привет! Прошу подсказать как произвести замену символов в строке с условием если перед.
Замена определенных символов в строке
Существует ли специальная функция или каким способом можно заменить например все символы D в строке.
Замена некоторых символов в строке
всем привет! Я хочу сделать так, чтобы у меня строка текста как бы исчезала в никуда. Есть.
Замена символов
У меня есть строка с ненужными мне знаками(это скобки(), пробел, знак сложения+, и знак -), их в.
Амнезия
Амнезия является заболеванием, связанным с частичной или полной потерей памяти, как спонтанного и временного, так длительного и постоянного типа. Память может вернуться в хронологическом порядке или по принципу наиболее ярких воспоминаний.
Причины и симптомы амнезии
Причины амнезии бывают двух основных типов – органические и психологические. Органические причины связаны с травмами, заболеваниями головного мозга и нервной системы, алкоголизмом, наркоманией, а также с действием антидепрессантов, снотворных и психотропных веществ.
Психологические причины заболевания носят психогенный характер и обычно связаны с психическими травмами и стрессами.
Причинами амнезии могут быть черепно-мозговые травмы, энцефалит, инсульт и интоксикация, а также удушья, отравления ядовитыми газами, ишемия и гипоксия.
Если заболевание носит постепенно нарастающий характер, то оно может быть связано с патологическими расстройствами и дегенеративными процессами в головном мозге, развитием опухолей и проявлением психического заболевания. Кратковременная потеря памяти часто происходит по причине нарушений мозгового кровообращения, приступов эпилепсии и острой мигрени.
Амнезия может иметь как самостоятельные симптомы, так и сочетающиеся с другими заболеваниями. Симптомами амнезии обычно являются внезапная или постепенная потеря памяти, спутанность сознания, нарушения координации, потеря ориентации по времени и пространству, отсутствие способности узнавать людей. Симптомы амнезии могут проявляться в течение нескольких минут, часов или лет.
Длительная амнезия приводит к полной потере памяти и дезориентации, но при правильном лечении пациент может получить полное выздоровление.
Часто причиной амнезии в острой форме является тяжелая алкогольная зависимость. В таком случае проявляется синдром Вернике, который сопровождается острой спутанностью сознания, нарушением мозговой функции и отсутствием собственной идентификации.
Симптомами амнезии с синдромом Вернике являются сонливость, нарушения зрения и слуха, плохая координация, спазмы мышц и паралич.
Виды амнезии
В настоящее время в медицине существует несколько основных видов амнезии:
- антероградная с потерей способности запоминания событий и людей;
- ретроградная с отсутствием воспоминаний до начала заболевания;
- травматическая, которая возникла после травмы, падения и удара;
- фиксационная с нарушением памяти на несколько минут;
- диссоциированная, которая является последствием психической травмы;
- синдром Корсакова, протекающий в тяжелой форме с длительной потерей памяти на почве алкоголизма;
- локализованная с нарушением одной или нескольких модальностей памяти, связанная с поражениями определенных отделов головного мозга и сочетающаяся с потерей памятью на слова, двигательные навыки и узнавание предметов;
- избирательная с потерей памяти на определенное событие, носящее психический и стрессовый характер;
- диссоциативная с тяжелыми последствиями и полной потерей памяти пациента о своей личности и биографии;
- детская, связанная с родовыми и возрастными травмами, переживаниями, стрессами, а также замедленным или остановившимся развитием отделов головного мозга.
Лечение амнезии
В первые периоды развития заболевания и при отсутствии прогрессирования лечение амнезии проводят с помощью нейропсихологических методов реабилитации пациентов. В состав терапии входят лекарственные препараты, которые усиливают функционирование головного мозга, такие как пирацетам, семакс, энцефабол, глиацитин и т.д.
Если заболевание носит травматический характер, то терапия направлена на лечение основных последствий физической травмы.
При сочетании амнезии с синдромом Вернике назначают внутривенный курс тиамина для восстановления функционирования головного мозга. Лечение носит экстренный характер, так как заболевание в запущенной стадии часто приводит к летальному исходу.
Эффективное лечение амнезии психологического типа заключается в проведении сеансов гипноза, назначении психотерапии, а также курса лекарственных препаратов нейролептического действия.
Регулярные выражения в PHP.
Регулярные выражения позволяют найти в строке последовательности, соответствующие шаблону. Например шаблон «Вася(.*)Пупкин» позволит найти последовательность когда между словами Вася и Пупкин будет любое количество любых символов. Если надо найти шесть цифр, то пишем «[0-9]<6>» (если, например, от шести до восьми цифр, тогда «[0-9]<6,8>«). Здесь разделены такие вещи как указатель набора символов и указатель необходимого количества:
Вместо набора символов может быть использовано обозначение любого символа — точка, может быть указан конкретный набор символов (поддерживаются последовательности — упоминавшиеся «0-9»). Может быть указано «кроме данного набора символов».
Указатель количества символов в официальной документации по php называется «квантификатор». Термин удобный и не несет в себе кривотолков. Итак, квантификатор может иметь как конкретное значение — либо одно фиксированное («<6>«), либо как числовой промежуток («<6,8>«), так и абстрактное «любое число, в т.ч. 0» («*»), «любое натуральное число» — от 1 до бесконечности («+»: «document[0-9]+.txt»), «либо 0, либо 1» («?»). По умолчанию квантификатор для данного набора символов равен единице («document[0-9].txt»).
Для более гибкого поиска сочетаний эти связки «набор символов — квантификатор» можно объединять в метаструктуры.
Как всякий гибкий инструмент, регулярные выражения гибки, но не абсолютно: зона их применения ограничена. Например, если вам надо заменить в тексте одну фиксированную строку на другую, фиксированную опять же, пользуйтесь str_replace. Разработчики php слезно умоляют не пользоваться ради этого сложными функциями ereg_replace или preg_replace, ведь при их вызове происходит процесс интерпретации строки, а это серьезно потребляет ресурсы системы. К сожалению, это любимые грабли начинающих php-программистов.
Пользуйтесь функциями регулярных выражений только если вы не знаете точно, какая «там» строка. Из примеров: поисковый код , в котором из строки поиска вырезаются служебные символы и короткие слова а так же вырезаются лишние пробелы (вернее, все пробелы сжимаются: » +» заменяется на один пробел). При помощи этих функций я проверяю email пользователя, оставляющего свой отзыв. Много полезного можно сделать, но важно иметь в виду: регулярные выражения не всесильны. Например, сложную замену в большом тексте ими лучше не делать. Ведь, к примеру, комбинация «(.*)» в программном плане означает перебор всех символов текста. А если шаблон не привязан к началу или концу строки, то и сам шаблон «двигается» программой через весь текст, и получается двойной перебор, вернее перебор в квадрате. Нетрудно догадаться, что еще одна комбинация «(.*)» означает перебор в кубе, и так далее. Возведите в третью степень, скажем, 5 килобайт текста. Получается 125 000 000 000 (прописью: сто двадцать пять миллиардов операций). Конечно же, если подходить строго, там стольких операций не будет, а будет раза в четыре-восемь меньше, но важен сам порядок цифр.
Набор символов
. | точка | любой символ |
[ ] | квадратные скобки | класс символов («любое из»). Например [abcdef] |
[^ ] | негативный класс символов («любое кроме») | |
— | тире | обозначение последовательности в классе символов («[0-9]» цифры) |
\d | [0-9] | Только цифры |
\D | [^0-9] | Кроме цифр |
\w | [a-z0-9] | Буквы и цифры |
\W | [^a-z0-9] | Кроме букв и цифр |
\s | [ ] | Пробельные символы: пробел, табуляция, перевод строки |
\S | [^ ] | Кроме пробельных символов |
| | (одно|другое) | На этом месте может быть один из перечисленных вариантов, например: (Вася|Петя|Маша). Если Вы не хотите, чтобы это попало в выборку используйте (?: . ) |
Не пользуйтесь классом символов для обозначения всего лишь одного (вместо «[ ]+» вполне сойдет » +»). Не пишите в классе символов точку это ведь любой символ, тогда другие символы в классе будут просто лишними (а в негативном классе получится отрицание всех символов).
Квантификатор
Квантификатором можно указать как конкретное значение, так и пределы. Если число заданных подпадает под пределы квантификатора, фрагмент выражения считается совпавшим с разбираемой строкой. Синтаксис:
Если нужно указать только необходимый минимум, а максимума нет, просто ставим запятую и не пишем второе число: «<5,>» («минимум 5»). Для наиболее часто употребляемых квантификаторов есть специальные обозначения:
* | «звёздочка» или знак умножения |
+ | плюс |
? | вопросительный знак |
На практике такие символы используются чаще, чем фигурные скобки.
Якоря
^ | привязка к началу строки |
$ | привязка к концу строки |
Эти символы должны стоять соответственно в самом начале и в самом конце строки.
Жадность
Вопросительный знак выступает еще и как минимизатор квантификатора:
.*?
Результат работы примера:
Строка шаблона, как вы уже заметили, начинается и заканчивается слэшами. После второго идут параметры:
i | регистронезависимый поиск |
m | |
s | символ «.» (точка) совпадает и с переносом строки (по умолчанию нет) |
A | привязка к началу текста |
E | заставляет символ «$» совпадать только с концом текста. Игнорируется, если установлен парамерт m. |
U | Инвертирует «жадность» для каждого квантификатора (если же после квантификатора стоит «?», этот квантификатор перестает быть «жадным»). |
e | Строка замены интерпретитуется как PHP код. |
Функции для работы с регулярными выражениями
- preg_grep — Возвращает массив вхождений, которые соответствуют шаблону
- preg_match — Выполняет проверку на соответствие регулярному выражению. Данная функция ищет только первое совпадение!
- preg_match_all — Выполняет глобальный поиск шаблона в строке
- preg_quote — Экранирует символы в регулярных выражениях. Т.е. вставляет слэши перед всеми служебными символами (например, скобками, квадратными скобками и т.п.), чтобы те воспринимались буквально. Если у вас есть какой-либо ввод информации пользователем, и вы проверяете его с помощью регулярных выражений, то лучше перед этим заэкранировать служебные символы в пришедшей переменной
- preg_replace — Выполняет поиск и замену по регулярному выражению
- preg_replace_callback — Выполняет поиск по регулярному выражению и замену
- preg_split — Разбивает строку по регулярному выражению
preg_grep
Функция preg_grep — Возвращает массив вхождений, которые соответствуют шаблону
array preg_grep (string pattern, array input [, int flags])
preg_grep() возвращает массив, состоящий из элементов входящего массива input, которые соответствуют заданному шаблону pattern.
Параметр flags может принимать следующие значения:
PREG_GREP_INVERT
В случае, если этот флаг установлен, функция preg_grep(), возвращает те элементы массива, которые не соответствуют заданному шаблону pattern.
Результат, возвращаемый функцией preg_grep() использует те же индексы, что и массив исходных данных. Если такое поведение вам не подходит, примените array_values() к массиву, возвращаемому preg_grep() для реиндексации.
Пример кода:
preg_match
Функция preg_match — Выполняет проверку на соответствие регулярному выражению
int preg_match ( string pattern, string subject [, array matches [, int flags [, int offset]]]) Ищет в заданном тексте subject совпадения с шаблоном pattern
В случае, если дополнительный параметр matches указан, он будет заполнен результатами поиска. Элемент $matches[0] будет содержать часть строки, соответствующую вхождению всего шаблона, $matches[1] — часть строки, соответствующую первой подмаске, и так далее.
flags может принимать следующие значения:
PREG_OFFSET_CAPTURE
В случае, если этот флаг указан, для каждой найденной подстроки будет указана ее позиция в исходной строке. Необходимо помнить, что этот флаг меняет формат возвращаемых данных: каждое вхождение возвращается в виде массива, в нулевом элементе которого содержится найденная подстрока, а в первом — смещение.
Поиск осуществляется слева направо, с начала строки. Дополнительный параметр offset может быть использован для указания альтернативной начальной позиции для поиска. Аналогичного результата можно достичь, заменив subject на substr()($subject, $offset).
Функция preg_match() возвращает количество найденных соответствий. Это может быть 0 (совпадения не найдены) и 1, поскольку preg_match() прекращает свою работу после первого найденного совпадения. Если необходимо найти либо сосчитать все совпадения, следует воспользоваться функцией preg_match_all(). Функция preg_match() возвращает FALSE в случае, если во время выполнения возникли какие-либо ошибки.
Рекомендация: Не используйте функцию preg_match(), если необходимо проверить наличие подстроки в заданной строке. Используйте для этого strpos() либо strstr(), поскольку они выполнят эту задачу гораздо быстрее.
Пример кода
Пример кода
Пример кода
preg_match_all
Функция preg_match_all — Выполняет глобальный поиск шаблона в строке
int preg_match_all (string pattern, string subject, array matches [, int flags [, int offset]])
Ищет в строке subject все совпадения с шаблоном pattern и помещает результат в массив matches в порядке, определяемом комбинацией флагов flags.
После нахождения первого соответствия последующие поиски будут осуществляться не с начала строки, а от конца последнего найденного вхождения.
Дополнительный параметр flags может комбинировать следующие значения (необходимо понимать, что использование PREG_PATTERN_ORDER одновременно с PREG_SET_ORDER бессмысленно):
PREG_PATTERN_ORDER
Если этот флаг установлен, результат будет упорядочен следующим образом: элемент $matches[0] содержит массив полных вхождений шаблона, элемент $matches[1] содержит массив вхождений первой подмаски, и так далее.
Пример кода
Как мы видим, $out[0] содержит массив полных вхождений шаблона, а элемент $out[1] содержит массив подстрок, содержащихся в тегах.
PREG_SET_ORDER
Если этот флаг установлен, результат будет упорядочен следующим образом: элемент $matches[0] содержит первый набор вхождений, элемент $matches[1] содержит второй набор вхождений, и так далее.
Пример кода
В таком случае массив $matches[0] содержит первый набор вхождений, а именно: элемент $matches[0][0] содержит первое вхождение всего шаблона, элемент $matches[0][1] содержит первое вхождение первой подмаски, и так далее. Аналогично массив $matches[1] содержит второй набор вхождений, и так для каждого найденного набора.
PREG_OFFSET_CAPTURE
В случае, если этот флаг указан, для каждой найденной подстроки будет указана ее позиция в исходной строке. Необходимо помнить, что этот флаг меняет формат возвращаемых данных: каждое вхождение возвращается в виде массива, в нулевом элементе которого содержится найденная подстрока, а в первом — смещение.
В случае, если никакой флаг не используется, по умолчанию используется PREG_PATTERN_ORDER.
Поиск осуществляется слева направо, с начала строки. Дополнительный параметр offset может быть использован для указания альтернативной начальной позиции для поиска. Аналогичного результата можно достичь, заменив subject на substr()($subject, $offset).
Возвращает количество найденных вхождений шаблона (может быть нулем) либо FALSE, если во время выполнения возникли какие-либо ошибки.
Пример кода
Пример кода
preg_quote
Функция preg_quote — Экранирует символы в регулярных выражениях
string preg_quote (string str [, string delimiter])
Функция preg_quote() принимает строку str и добавляет обратный слеш перед каждым служебным символом. Это бывает полезно, если в составлении шаблона участвуют строковые переменные, значение которых в процессе работы скрипта может меняться.
В случае, если дополнительный параметр delimiter указан, он будет также экранироваться. Это удобно для экранирования ограничителя, который используется в PCRE функциях. Наиболее распространенным ограничителем является символ ‘/’.
В регулярных выражениях служебными считаются следующие символы: . \\ + * ? [ ^ ] $ ( ) < >= ! | :
Пример кода
Пример кода
preg_replace
Функция preg_replace — Выполняет поиск и замену по регулярному выражению
mixed preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit])
Выполняет поиск в строке subject совпадений с шаблоном pattern и заменяет их на replacement. В случае, если параметр limit указан, будет произведена замена limit вхождений шаблона; в случае, если limit опущен либо равняется -1, будут заменены все вхождения шаблона.
Replacement может содержать ссылки вида \\n либо (начиная с PHP 4.0.4) $n, причем последний вариант предпочтительней. Каждая такая ссылка, будет заменена на подстроку, соответствующую n’нной заключенной в круглые скобки подмаске. n может принимать значения от 0 до 99, причем ссылка \\0 (либо $0) соответствует вхождению всего шаблона. Подмаски нумеруются слева направо, начиная с единицы.
При использовании замены по шаблону с использованием ссылок на подмаски может возникнуть ситуация, когда непосредственно за маской следует цифра. В таком случае нотация вида \\n приводит к ошибке: ссылка на первую подмаску, за которой следует цифра 1, запишется как \\11, что будет интерпретировано как ссылка на одиннадцатую подмаску. Это недоразумение можно устранить, если воспользоваться конструкцией \$<1>1, указывающей на изолированную ссылку на первую подмаску, и следующую за ней цифру 1.
Результатом работы этого примера будет:
Если во время выполнения функции были обнаружены совпадения с шаблоном, будет возвращено измененное значение subject, в противном случае будет возвращен исходный текст subject.
Первые три параметра функции preg_replace() могут быть одномерными массивами. В случае, если массив использует ключи, при обработке массива они будут взяты в том порядке, в котором они расположены в массиве. Указание ключей в массиве для pattern и replacement не является обязательным. Если вы все же решили использовать индексы, для сопоставления шаблонов и строк, участвующих в замене, используйте функцию ksort() для каждого из массивов.
В случае, если параметр subject является массивом, поиск и замена по шаблону производятся для каждого из его элементов. Возвращаемый результат также будет массивом.
В случае, если параметры pattern и replacement являются массивами, preg_replace() поочередно извлекает из обоих массивов по паре элементов и использует их для операции поиска и замены. Если массив replacement содержит больше элементов, чем pattern, вместо недостающих элементов для замены будут взяты пустые строки. В случае, если pattern является массивом, а replacement — строкой, по каждому элементу массива pattern будет осущесвтлен поиск и замена на pattern (шаблоном будут поочередно все элементы массива, в то время как строка замены остается фиксированной). Вариант, когда pattern является строкой, а replacement — массивом, не имеет смысла.
Модификатор /e меняет поведение функции preg_replace() таким образом, что параметр replacement после выполнения необходимых подстановок интерпретируется как PHP-код и только после этого используется для замены. Используя данный модификатор, будьте внимательны: параметр replacement должен содержать корректный PHP-код, в противном случае в строке, содержащей вызов функции preg_replace(), возникнет ошибка синтаксиса.
Пример кода: Замена по нескольким шаблонам
Этот пример выведет:
Пример кода: Использование модификатора /e
Пример кода: Преобразует все HTML-теги к верхнему регистру
preg_replace_callback
Функция preg_replace_callback — Выполняет поиск по регулярному выражению и замену с использованием функции обратного вызова
mixed preg_replace_callback (mixed pattern, callback callback, mixed subject [, int limit])
Поведение этой функции во многом напоминает preg_replace(), за исключением того, что вместо параметра replacement необходимо указывать callback функцию, которой в качестве входящего параметра передается массив найденных вхождений. Ожидаемый результат — строка, которой будет произведена замена.
Пример кода
preg_split
Функция preg_split — Разбивает строку по регулярному выражению
array preg_split (string pattern, string subject [, int limit [, int flags]])
Возвращает массив, состоящий из подстрок заданной строки subject, которая разбита по границам, соответствующим шаблону pattern.
В случае, если параметр limit указан, функция возвращает не более, чем limit подстрок. Специальное значение limit, равное -1, подразумевает отсутствие ограничения, это весьма полезно для указания еще одного опционального параметра flags.
flags может быть произвольной комбинацией следующих флагов (соединение происходит при помощи оператора ‘|’):
PREG_SPLIT_NO_EMPTY
В случае, если этот флаг указан, функция preg_split() вернет только непустые подстроки.
PREG_SPLIT_DELIM_CAPTURE
В случае, если этот флаг указан, выражение, заключенное в круглые скобки в разделяющем шаблоне, также извлекается из заданной строки и возвращается функцией. Этот флаг был добавлен в PHP 4.0.5.
PREG_SPLIT_OFFSET_CAPTURE
В случае, если этот флаг указан, для каждой найденной подстроки, будет указана ее позиция в исходной строке. Необходимо помнить, что этот флаг меняет формат возвращаемых данных: каждое вхождение возвращается в виде массива, в нулевом элементе которого содержится найденная подстрока, а в первом — смещение.
Примеры кода
В случае, если после открывающей круглой скобки следует «?:«, захват строки не происходит, и текущая подмаска не нумеруется. Например, если строка «the white queen» сопоставляется с шаблоном the ((?:red|white) (king|queen)), будут захвачены подстроки «white queen» и «queen», и они будут пронумерованы 1 и 2 соответственно:
Популярные примеры работы регулярных выражений в PHP
Вопросов по данной теме уйма. И я решил создать свою подборку регулярных выражений. Думаю многим поможет!
Для справки. . — (точка) соответствует любому символу. <> — (фигурные скобки) нужны для обозначения количества необходимых символов. Например, w <3>— три буквы w подряд. Также есть диапозон z<2,5>, то есть z может повторяться от 2 до 5 раз. | — (вертикальная черта) логическое или в регулярных выражениях. \n — перевод строки \r — так же перевод строки \t — табуляция \d — цифра \D — только не цифра \s — пробел \S — только не пробел \w — все буквы, цифры и знак подчеркивания «_» \W — только не буква, цифра или подчеркивание Модификаторы в конце выражения /i — делает поиск по выражению регистронезависимым. Нет разницы между заглавным и прописным символом /U — модификатор указывает на то, что результатом поиска должен быть самый короткий отрывок, удовлетворяющий маске поиска. Рекомендую всегда использовать данный модификатор /m — этот модификатор позволяет искать отрезок текста только внутри одной строки /s — поиск идёт всему тексту, не обращая внимания на переносы строк /x — игнорируются пробельные символы, в том числе символы табуляции и перевода строки |
Примеры preg_replace PHP
1. Удаляем определённую ссылку в переменной text
2. Удаляем комментарии в переменной text
3. Удаляем спецсимволы
4. Удаляем всё, что между
5. Удаляем всё, что между
6. Удаляем конкретные символы из строки
7. Удаляем пробелы по бокам строки и обычные пробелы
8. Удаляем лишние переводы строк и переносы
9. Удаляем расширения в названиях файлов
10. Создаём функцию обработки текста
11. Найти содержимое определённого тега и вставить его в другие теги
12. Удаляем многократно повторяющиеся знаки препинания (например, . или . )
13. Добавить или убрать текст в начале или конце переменной с текстом
14. Находим все http:// и заменяем на ссылки
15. Удаление GET-параметров из URL
16. Добавить тег br в начало или конец строк
17. Как конвертировать html в текст
18. Как разобрать email и сделать ссылку
Примеры preg_match PHP
1. проверка mail адреса на корректность
2. Найти mail адреса в тексте
3. Является ли переменная числом, длиной от 13 до 16 символов (проверка кредитной карты)
4. Проверка имени файла
Программы (exe, xpi, . )
Изображения (jpg, png, . )
5. Ищем в тексте мобильные телефоны РФ
6. Состоит ли строка только из букв, цифр и _, длиной от 8 до 20 символов:
7. Есть ли в строке идущие подряд символы, не менее 3-х символов подряд (типа абвгДДДеё, но не ааббаабб):
8. Поиск в разных частях строки конструкции:
9. Проверки на тип браузера. Возвращает true если browser = Netscape 2, 3 or MSIE 3.
Примеры ereg PHP
1. Проверка mail адреса в тексте
Регулярные выражения в PHP
Регулярные выражения ( сокращенно — regex ) представляют собой последовательности символов, которые формируют шаблоны поиска. В основном они используются в шаблонах сопоставления со строками.
- Все началось в 1940 — 1960-х годах, когда множество умных людей говорили о регулярных выражениях;
- 1970-е годы g / re / p;
- 1980 Perl и Генри Спенсер;
- 1997 PCRE (регулярные выражения, совместимые с Perl). Именно тогда начался взлет того, что мы называем регулярные выражения. PCRE предоставляет библиотеки почти для каждого языка.
Общее использование регулярных выражений в PHP
PHP включает в себя три основные функции для работы с PCRE — preg_match , preg_match_all и preg_replace .
Выражение возвращает 1 , если соответствие установлено, 0 — если нет, и false — если возникает ошибка:
Регулярного выражения пример, который возвращает количество найденных совпадений:
Выражение возвращает замененную строку или массив ( на основе объекта $subject ):
Общее использование регулярных выражений в JavaScript
Регулярные выражения в JavaScript выглядят почти так же, как и в PHP .
Возвращает массив совпадений или null , если совпадений не найдено:
Регулярное выражение, которое возвращает строку с выполненными заменами:
Особенности регулярных выражений в JavaScript
- Точка никогда не соответствует новой строке:
- Те же методы для сравнения соответствия и замены через регулярное выражение, что и без них.
Принципы составления шаблонов регулярных выражений
Рассмотрим пример, в котором нужно найти адреса электронной почты в базе кода. Наша цель: /[w.+-][email protected][a-z0-9-]+(.[a-z0-9-]+)*/i
Регулярные выражения состоят из двух типов символов:
- специальные символы: []? * + <> () ^ $ / .
- Литералы.
Представьте себе входные строки как болты, а шаблон — как набор разъемов для них (в соответствующем порядке).
При проверке регулярных выражений нужно знать, как работают специальные символы:
- Символ обратной косой черты \ может заменять другой специальный символ в регулярном выражении:
- Точка и w — .
Совпадение со всеми символами, кроме новых строк. Если хотите проверить на соответствие точке, и только точке — , на соответствие буквам, цифрам и нижнему подчеркиванию — w
Совпадение с символами внутри скобок. Поддерживает диапазоны. Некоторые примеры:
o [abc] — соответствует любым a, b или c.
o [a-z] прописные буквы.
o [0-9] любая цифра.
o [a-zA-Z] — соответствует любому буквенному символу в нижнем или верхнем регистре.
• Опционально ? Соответствие 0 или 1.
• Звездочка *.
Звездочка обозначает 0 или более символов.
Соответствие 1 или более символам.
Минимальное и максимальное значения. Некоторые примеры синтаксиса регулярных выражений:
o <1,>не менее 1.
o <1,3>от 1 до 3.
o <1,64>от 1 до 64.
Добавим все это, чтобы получить регулярное выражение для адресов электронной почты:
Как это выглядит в PHP :
Использование регулярного выражения для валидации
Задача : убедиться, что вводимые данные — это то, что мы ожидаем. Цель 1 : /[^[]w$.]/ Цель 2: /^[0-9]<1,2>[dwmy]$/
Регулярные выражения подходят для поиска элементов, но вам нужно знать, что именно вы ищете.
Когда не стоит использовать регулярное выражение для проверки?
Многие случаи лучше обрабатывать с помощью функции PHP filter_var . Например, проверка адреса электронной почты должна выполняться с помощью встроенных фильтров PHP :
Валидация с помощью регулярных выражений
Регулярные выражения в конце строки используют анкоры:
^ — указывает начало строки.
$ — знак доллара, который указывает конец строки.
Исключенные классы символов
[^abc] — все, кроме a , b или c , включая новые строки.
Пример, который обеспечивает ввод только буквенно-цифровых символов, тире, точки, подчеркивания:
Поиск и замена
Наиболее распространенными функциями PCRE для выполнения поиска и замены являются preg_replace() и preg_replace_callback() . Но есть также preg_filter() и preg_replace_callback_array() , которые делают почти то же самое. Обратите внимание, что функция preg_replace_callback_array() доступна, начиная с PHP7 .
Заменить слова в списке
Если в регулярном выражении есть подшаблоны ( в круглых скобках ), можно заменить $N или N ( где N является целым числом > = 1 ), это называется «обратная ссылка».
Перестановка двух чисел
Изменение форматирования даты
Простой пример замены URL-адреса в теге
Иногда нужно выполнить сложный поиск и замену, например, при фильтрации/проверке перед заменой. В этой ситуации может пригодиться preg_replace_callback() .
Приведенное в предыдущем примере регулярное выражение может заменить только URL-адреса , начинающиеся с http или https . Но теперь нам также нужно заменить URL-адреса, начинающиеся с www. Кто-то подумает, что можно просто изменить https? : // в подшаблоне. Например, на ( ?: Https? : // | www . ), Но это не будет работать в большинстве браузеров, потому что они будут интерпретировать www.domain как относительный путь.
Поэтому в конструкторе регулярных выражений перед заменой нужно выполнить некоторые действия, добавив http:// , если URL-адрес начинается с www .
Проблема : ссылка @mentions и #tags
Цель : /[email protected]([w]<2,>)/i
Данная публикация представляет собой перевод статьи « Regex — regular expressions in PHP » , подготовленной дружной командой проекта Интернет-технологии.ру
str_replace — Заменяет все вхождения строки поиска на строку замены
(PHP 4, PHP 5, PHP 7)
str_replace — Заменяет все вхождения строки поиска на строку замены
Описание
Эта функция возвращает строку или массив, в котором все вхождения search в subject заменены на replace .
Если не нужны сложные правила поиска/замены (например, регулярные выражения), использование этой функции предпочтительнее preg_replace() .
Список параметров
Если search и replace — массивы, то str_replace() использует каждое значение из соответствующего массива для поиска и замены в subject . Если в массиве replace меньше элементов, чем в search , в качестве строки замены для оставшихся значений будет использована пустая строка. Если search — массив, а replace — строка, то эта строка замены будет использована для каждого элемента массива search . Обратный случай смысла не имеет.
Если search или replace являются массивами, их элементы будут обработаны от первого к последнему.
Искомое значение, также известное как needle (иголка). Для множества искомых значений можно использовать массив.
Значение замены, будет использовано для замены искомых значений search . Для множества значений можно использовать массив.
Строка или массив, в котором производится поиск и замена, также известный как haystack (стог сена).
Если subject является массивом, то поиск с заменой будет осуществляться над каждым элементом subject , а результатом функции также будет являться массив.
Если передан, то будет установлен в количество произведенных замен.
Возвращаемые значения
Эта функция возвращает строку или массив с замененными значениями.
Примеры
Пример #1 Примеры использования str_replace()
// присваивает
$bodytag = str_replace ( «%body%» , «black» , » » );
// присваивает: Hll Wrld f PHP
$vowels = array( «a» , «e» , «i» , «o» , «u» , «A» , «E» , «I» , «O» , «U» );
$onlyconsonants = str_replace ( $vowels , «» , «Hello World of PHP» );
// присваивает: You should eat pizza, beer, and ice cream every day
$phrase = «You should eat fruits, vegetables, and fiber every day.» ;
$healthy = array( «fruits» , «vegetables» , «fiber» );
$yummy = array( «pizza» , «beer» , «ice cream» );
$newphrase = str_replace ( $healthy , $yummy , $phrase );
// присваивает: 2
$str = str_replace ( «ll» , «» , «good golly miss molly!» , $count );
echo $count ;
?>
Пример #2 Примеры потенциальных трюков с str_replace()
// Порядок замены
$str = «Строка 1\nСтрока 2\rСтрока 3\r\nСтрока 4\n» ;
$order = array( «\r\n» , «\n» , «\r» );
$replace = ‘
‘ ;
// Обрабатывает сначала \r\n для избежания их повторной замены.
echo $newstr = str_replace ( $order , $replace , $str );
// Выводит F, т.к. A заменяется на B, затем B на C, и так далее.
// В итоге E будет заменено F, так как замена происходит слева направо.
$search = array( ‘A’ , ‘B’ , ‘C’ , ‘D’ , ‘E’ );
$replace = array( ‘B’ , ‘C’ , ‘D’ , ‘E’ , ‘F’ );
$subject = ‘A’ ;
echo str_replace ( $search , $replace , $subject );
// Выводит: яблорехкорех орех (по вышеуказанной причине)
$letters = array( ‘я’ , ‘о’ );
$fruit = array( ‘яблоко’ , ‘орех’ );
$text = ‘я о’ ;
$output = str_replace ( $letters , $fruit , $text );
echo $output ;
?>
Примечания
Замечание: Эта функция безопасна для обработки данных в двоичной форме.
Замечание о порядке замены
Так как str_replace() осуществляет замену слева направо, то при использовании множественных замен она может заменить ранее вставленное значение на другое. Смотрите также примеры на этой странице.
Эта функция чувствительна к регистру. Используйте str_ireplace() для замены, нечувствительной к регистру.
Смотрите также
- str_ireplace() — Регистронезависимый вариант функции str_replace
- substr_replace() — Заменяет часть строки
- preg_replace() — Выполняет поиск и замену по регулярному выражению
- strtr() — Преобразует заданные символы или заменяет подстроки
Amnesia: The Dark Descent: Совет (русский текст, английская озвучка)
Что бы был русский текст и английская озвучка, нужно открыть файл russian.lang
(Который находится:
Русская версия игры: x: Games Frictional Games Амнезия. Призрак прошлого config lang_main
Английская версия: x: Games Frictional Games Amnesia redist config lang_main)
блокнотом и изменить в строчке: Directory Path=»lang/rus»
«rus» на «eng»
Это для тех кого не радует русская озвучка.
str_replace
(PHP 4, PHP 5, PHP 7)
str_replace — Заменяет все вхождения строки поиска на строку замены
Описание
Эта функция возвращает строку или массив, в котором все вхождения search в subject заменены на replace .
Если не нужны сложные правила поиска/замены (например, регулярные выражения), использование этой функции предпочтительнее preg_replace() .
Список параметров
Если search и replace — массивы, то str_replace() использует каждое значение из соответствующего массива для поиска и замены в subject . Если в массиве replace меньше элементов, чем в search , в качестве строки замены для оставшихся значений будет использована пустая строка. Если search — массив, а replace — строка, то эта строка замены будет использована для каждого элемента массива search . Обратный случай смысла не имеет.
Если search или replace являются массивами, их элементы будут обработаны от первого к последнему.
Искомое значение, также известное как needle (иголка). Для множества искомых значений можно использовать массив.
Значение замены, будет использовано для замены искомых значений search . Для множества значений можно использовать массив.
Строка или массив, в котором производится поиск и замена, также известный как haystack (стог сена).
Если subject является массивом, то поиск с заменой будет осуществляться над каждым элементом subject , а результатом функции также будет являться массив.
Если передан, то будет установлен в количество произведенных замен.
Возвращаемые значения
Эта функция возвращает строку или массив с замененными значениями.
Примеры
Пример #1 Примеры использования str_replace()
// присваивает
$bodytag = str_replace ( «%body%» , «black» , » » );
// присваивает: Hll Wrld f PHP
$vowels = array( «a» , «e» , «i» , «o» , «u» , «A» , «E» , «I» , «O» , «U» );
$onlyconsonants = str_replace ( $vowels , «» , «Hello World of PHP» );
// присваивает: You should eat pizza, beer, and ice cream every day
$phrase = «You should eat fruits, vegetables, and fiber every day.» ;
$healthy = array( «fruits» , «vegetables» , «fiber» );
$yummy = array( «pizza» , «beer» , «ice cream» );
$newphrase = str_replace ( $healthy , $yummy , $phrase );
// присваивает: 2
$str = str_replace ( «ll» , «» , «good golly miss molly!» , $count );
echo $count ;
?>
Пример #2 Примеры потенциальных трюков с str_replace()
// Порядок замены
$str = «Строка 1\nСтрока 2\rСтрока 3\r\nСтрока 4\n» ;
$order = array( «\r\n» , «\n» , «\r» );
$replace = ‘
‘ ;
// Обрабатывает сначала \r\n для избежания их повторной замены.
echo $newstr = str_replace ( $order , $replace , $str );
// Выводит F, т.к. A заменяется на B, затем B на C, и так далее.
// В итоге E будет заменено F, так как замена происходит слева направо.
$search = array( ‘A’ , ‘B’ , ‘C’ , ‘D’ , ‘E’ );
$replace = array( ‘B’ , ‘C’ , ‘D’ , ‘E’ , ‘F’ );
$subject = ‘A’ ;
echo str_replace ( $search , $replace , $subject );
// Выводит: яблорехкорех орех (по вышеуказанной причине)
$letters = array( ‘я’ , ‘о’ );
$fruit = array( ‘яблоко’ , ‘орех’ );
$text = ‘я о’ ;
$output = str_replace ( $letters , $fruit , $text );
echo $output ;
?>
Примечания
Замечание: Эта функция безопасна для обработки данных в двоичной форме.
Замечание о порядке замены
Так как str_replace() осуществляет замену слева направо, то при использовании множественных замен она может заменить ранее вставленное значение на другое. Смотрите также примеры на этой странице.
Эта функция чувствительна к регистру. Используйте str_ireplace() для замены без учета регистра.
Смотрите также
- str_ireplace() — Регистронезависимый вариант функции str_replace
- substr_replace() — Заменяет часть строки
- preg_replace() — Выполняет поиск и замену по регулярному выражению
- strtr() — Преобразует заданные символы или заменяет подстроки
User Contributed Notes 31 notes
A faster way to replace the strings in multidimensional array is to json_encode() it, do the str_replace() and then json_decode() it, like this:
function str_replace_json ( $search , $replace , $subject ) <
return json_decode ( str_replace ( $search , $replace , json_encode ( $subject )));
>
?>
This method is almost 3x faster (in 10000 runs.) than using recursive calling and looping method, and 10x simpler in coding.
function str_replace_deep ( $search , $replace , $subject )
<
if ( is_array ( $subject ))
<
foreach( $subject as & $oneSubject )
$oneSubject = str_replace_deep ( $search , $replace , $oneSubject );
unset( $oneSubject );
return $subject ;
> else <
return str_replace ( $search , $replace , $subject );
>
>
?>
Note that this does not replace strings that become part of replacement strings. This may be a problem when you want to remove multiple instances of the same repetative pattern, several times in a row.
If you want to remove all dashes but one from the string ‘-aaa—-b-c——d—e—f’ resulting in ‘-aaa-b-c-d-e-f’, you cannot use str_replace. Instead, use preg_replace:
= ‘-aaa—-b-c——d—e—f’ ;
echo str_replace ( ‘—‘ , ‘-‘ , $challenge ). ‘
‘ ;
echo preg_replace ( ‘/—+/’ , ‘-‘ , $challenge ). ‘
‘ ;
?>
This outputs the following:
-aaa—b-c—d-e—f
-aaa-b-c-d-e-f
Feel free to optimize this using the while/for or anything else, but this is a bit of code that allows you to replace strings found in an associative array.
For example:
= array(
‘dog’ => ‘cat’ ,
‘apple’ => ‘orange’
‘chevy’ => ‘ford’
);
$string = ‘I like to eat an apple with my dog in my chevy’ ;
echo str_replace_assoc ( $replace , $string );
// Echo: I like to eat an orange with my cat in my ford
?>
Here is the function:
function strReplaceAssoc (array $replace , $subject ) <
return str_replace ( array_keys ( $replace ), array_values ( $replace ), $subject );
>
?>
[Jun 1st, 2010 — EDIT BY thiago AT php DOT net: Function has been replaced with an updated version sent by ljelinek AT gmail DOT com]
Be careful when replacing characters (or repeated patterns in the FROM and TO arrays):
= array( «1» , «2» , «3» , «B» );
$arrTo = array( «A» , «B» , «C» , «D» );
$word = «ZBB2» ;
echo str_replace ( $arrFrom , $arrTo , $word );
?>
I would expect as result: «ZDDB»
However, this return: «ZDDD»
(Because B = D according to our array)
To make this work, use «strtr» instead:
= array( «1» => «A» , «2» => «B» , «3» => «C» , «B» => «D» );
$word = «ZBB2» ;
echo strtr ( $word , $arr );
?>
This returns: «ZDDB»
This is what happens when the search and replace arrays are different sizes:
= array( ‘a’ , ‘b’ , ‘c’ , ‘d’ , ‘e’ );
$replace = array( ‘A’ , ‘B’ , ‘C’ );
$subject = ‘abcdefg’ ;
echo str_replace ( $search , $replace , $subject );
// result: ‘ABCfg’
$search = array( ‘a’ , ‘b’ , ‘c’ );
$replace = array( ‘A’ , ‘B’ , ‘C’ , ‘D’ , ‘E’ );
$subject = ‘abcdefg’ ;
echo str_replace ( $search , $replace , $subject );
// result: ‘ABCdefg’
?>
No warning or error is generated in either of these cases.
Escaping strings with control characters, quotes and backslashes for subsequent use in MySQL commands.
MySQL has documented a number of backslash escape sequences that need to be used to pass certain values in SQL commands: https://dev.mysql.com/doc/refman/5.7/en/string-literals.html
It’s crucial to escape existing backslashes first to prevent double-escaping, before escaping the various control sequences:
= str_replace (
array( ‘\\’ , «\0» , «‘» , «\x8» /* BS */ , «\n» , «\r» , «\t» , «\x1A» /* Ctrl+Z */ ),
array( ‘\\\\’ , ‘\\0’ , ‘\\\» , ‘\\b’ , ‘\\n’ , ‘\\r’ , ‘\\t’ , ‘\\Z’ ),
$value );
?>
This code is NOT intended to protect against SQL insertions, it’s intended to PRESERVE string content correctly, if it contains control characters.
Be aware that if you use this for filtering & sanitizing some form of user input, or remove ALL instances of a string, there’s another gotcha to watch out for:
// Remove all double characters
$string=»1001011010″;
$string=str_replace(array(«11″,»00″),»»,$string);
// Output: «110010»
$string=» ml> Malicious code html> etc»;
$string=str_replace(array(» «,» «),»»,$string);
// Output: » Malicious code etc»
As previous commentators mentioned, when $search contains values that occur earlier in $replace, str_replace will factor those previous replacements into the process rather than operating solely on the original string. This may produce unexpected output.
= array( ‘A’ , ‘B’ , ‘C’ , ‘D’ , ‘E’ );
$replace = array( ‘B’ , ‘C’ , ‘D’ , ‘E’ , ‘F’ );
$subject = ‘ABCDE’ ;
echo str_replace ( $search , $replace , $subject ); // output: ‘FFFFFF’
?>
In the above code, the $search and $replace should replace each occurrence in the $subject with the next letter in the alphabet. The expected output for this sample is ‘BCDEF’; however, the actual output is ‘FFFFF’.
To more clearly illustrate this, consider the following example:
= array( ‘A’ , ‘B’ , ‘C’ , ‘D’ , ‘E’ );
$replace = array( ‘B’ , ‘C’ , ‘D’ , ‘E’ , ‘F’ );
$subject = ‘A’ ;
echo str_replace ( $search , $replace , $subject ); // output: ‘F’
?>
Since ‘A’ is the only letter in the $search array that appears in $subject, one would expect the result to be ‘B’; however, replacement number $n does *not* operate on $subject, it operates on $subject after the previous $n-1 replacements have been completed.
The following function utilizes array_combine and strtr to produce the expected output, and I believe it is the most efficient way to perform the desired string replacement without prior replacements affecting the final result.
/**
* When using str_replace(. ), values that did not exist in the original string (but were put there by previous
* replacements) will be replaced continuously. This string replacement function is designed replace the values
* in $search with those in $replace while not factoring in prior replacements. Note that this function will
* always look for the longest possible match first and then work its way down to individual characters.
*
* The «o» in «stro_replace» represents «original», indicating that the function operates only on the original string.
*
* @param array $search list of strings or characters that need to be replaced
* @param array $replace list of strings or characters that will replace the corresponding values in $search
* @param string $subject the string on which this operation is being performed
*
* @return string $subject with all substrings in the $search array replaced by the values in the $replace array
*/
function stro_replace ( $search , $replace , $subject )
<
return strtr ( $subject , array_combine ( $search , $replace ) );
>
$search = array( ‘A’ , ‘B’ , ‘C’ , ‘D’ , ‘E’ );
$replace = array( ‘B’ , ‘C’ , ‘D’ , ‘E’ , ‘F’ );
$subject = ‘ABCDE’ ;
echo stro_replace ( $search , $replace , $subject ); // output: ‘BCDEF’
?>
Some other examples:
= array( ‘ ‘ , ‘&’ );
$replace = array( ‘ ‘ , ‘&’ );
$subject = ‘Hello & goodbye!’ ;
// We want to replace the spaces with and the ampersand with &
echo str_replace ( $search , $replace , $subject ); // output: «Hello & goodbye!» — wrong!
echo stro_replace ( $search , $replace , $subject ); // output: «Hello & goodbye!» — correct!
/*
Note: Run the above code in the CLI or view source on your web browser — the replacement strings for stro_replace are HTML entities which the browser interprets.
*/
?>
= array( ‘ERICA’ , ‘AMERICA’ );
$replace = array( ‘JON’ , ‘PHP’ );
$subject = ‘MIKE AND ERICA LIKE AMERICA’ ;
// We want to replace the name «ERICA» with «JON» and the word «AMERICA» with «PHP»
echo str_replace ( $search , $replace , $subject ); // output: «MIKE AND JON LIKE AMJON», which is not correct
echo stro_replace ( $search , $replace , $subject ); // output: «MIKE AND JON LIKE PHP», which is correct
?>
str_replace()
Синтаксис:
str_replace(search, replace, subject[, count])
Поддерживается следующими версиями PHP:
Описание функции:
Функции str_replace() производит замену одних символов в строке другими.
Обязательный аргумент. Строка или массив поиска
Использование функции str_replace() предпочтительнее использованию функции preg_replace(), так как работает быстрее.
Функция str_replace() отличается от функции str_ireplace() тем, что чувствительна к регистру.
Примеры:
Пример 1:
echo str_replace(«Вова»,»Дима»,»С добрым утром Вова!»);
?>
С добрым утром Дима!
Пример 2:
В этом примере показано использование массивов
$arr1 = array(«1″,»2″,»3»);
$arr2 = array(«a»,»b»,»c»);
echo str_replace($arr2,$arr1,»cabdfg»);
?>
Пример 3:
В этом примере показано использование массивов во всех аргументах
$arr1 = array(«1″,»2″,»3»);
$arr2 = array(«a»,»b»,»c»);
$arr3 = array(«t»,»c»,»a»);
print_r (str_replace($arr2,$arr1,$arr3));
?>
Амнезия
Амнезия является заболеванием, связанным с частичной или полной потерей памяти, как спонтанного и временного, так длительного и постоянного типа. Память может вернуться в хронологическом порядке или по принципу наиболее ярких воспоминаний.
Причины и симптомы амнезии
Причины амнезии бывают двух основных типов – органические и психологические. Органические причины связаны с травмами, заболеваниями головного мозга и нервной системы, алкоголизмом, наркоманией, а также с действием антидепрессантов, снотворных и психотропных веществ.
Психологические причины заболевания носят психогенный характер и обычно связаны с психическими травмами и стрессами.
Причинами амнезии могут быть черепно-мозговые травмы, энцефалит, инсульт и интоксикация, а также удушья, отравления ядовитыми газами, ишемия и гипоксия.
Если заболевание носит постепенно нарастающий характер, то оно может быть связано с патологическими расстройствами и дегенеративными процессами в головном мозге, развитием опухолей и проявлением психического заболевания. Кратковременная потеря памяти часто происходит по причине нарушений мозгового кровообращения, приступов эпилепсии и острой мигрени.
Амнезия может иметь как самостоятельные симптомы, так и сочетающиеся с другими заболеваниями. Симптомами амнезии обычно являются внезапная или постепенная потеря памяти, спутанность сознания, нарушения координации, потеря ориентации по времени и пространству, отсутствие способности узнавать людей. Симптомы амнезии могут проявляться в течение нескольких минут, часов или лет.
Длительная амнезия приводит к полной потере памяти и дезориентации, но при правильном лечении пациент может получить полное выздоровление.
Часто причиной амнезии в острой форме является тяжелая алкогольная зависимость. В таком случае проявляется синдром Вернике, который сопровождается острой спутанностью сознания, нарушением мозговой функции и отсутствием собственной идентификации.
Симптомами амнезии с синдромом Вернике являются сонливость, нарушения зрения и слуха, плохая координация, спазмы мышц и паралич.
Виды амнезии
В настоящее время в медицине существует несколько основных видов амнезии:
- антероградная с потерей способности запоминания событий и людей;
- ретроградная с отсутствием воспоминаний до начала заболевания;
- травматическая, которая возникла после травмы, падения и удара;
- фиксационная с нарушением памяти на несколько минут;
- диссоциированная, которая является последствием психической травмы;
- синдром Корсакова, протекающий в тяжелой форме с длительной потерей памяти на почве алкоголизма;
- локализованная с нарушением одной или нескольких модальностей памяти, связанная с поражениями определенных отделов головного мозга и сочетающаяся с потерей памятью на слова, двигательные навыки и узнавание предметов;
- избирательная с потерей памяти на определенное событие, носящее психический и стрессовый характер;
- диссоциативная с тяжелыми последствиями и полной потерей памяти пациента о своей личности и биографии;
- детская, связанная с родовыми и возрастными травмами, переживаниями, стрессами, а также замедленным или остановившимся развитием отделов головного мозга.
Лечение амнезии
В первые периоды развития заболевания и при отсутствии прогрессирования лечение амнезии проводят с помощью нейропсихологических методов реабилитации пациентов. В состав терапии входят лекарственные препараты, которые усиливают функционирование головного мозга, такие как пирацетам, семакс, энцефабол, глиацитин и т.д.
Если заболевание носит травматический характер, то терапия направлена на лечение основных последствий физической травмы.
При сочетании амнезии с синдромом Вернике назначают внутривенный курс тиамина для восстановления функционирования головного мозга. Лечение носит экстренный характер, так как заболевание в запущенной стадии часто приводит к летальному исходу.
Эффективное лечение амнезии психологического типа заключается в проведении сеансов гипноза, назначении психотерапии, а также курса лекарственных препаратов нейролептического действия.