Как перенести базу данных

Перенос базы wordpress через PhpMyAdmin

Скрипт PhpMyAdmin имеется практически во всех нормальных хостингах и позволяет работать с базой данных сайта через SQL запросы и с помощью возможностей интерфейса. Не буду сейчас детально рассматривать все фишки приложения, т.к. их немало. Остановимся исключительно на миграции WordPress базы.

Если для вашего проекта подключена cPanel, то найдете PhpMyAdmin в разделе «Databases». Там же рядом, кстати, есть опции создания БД и пользователей под новый сайт.

В других панелях управления принцип входа в приложение аналогичный. Иногда пользователям выдают отдельные доступы (логин, пароль, адрес) к PhpMyAdmin. Если у вас возникли проблемы на этом этапе, лучше обратиться в тех.поддержку вашего хостера.

В инструменте нас интересуют разделы «Экспорт» и «Импорт». Первый используется при создании дампа БД (выгрузка всей информации в файл), второй — для его загрузки/импорта. Применяя поочередно эти функции мы и получаем перенос базы данных WordPress будь то или любой другой движок.

Начнем с экспорта. Вот как приблизительно выглядит соответствующая страница в PhpMyAdmin (кликабельно):

Алгоритм следующий:

  1. Выбираете нужную базу данных.
  2. Кликаете по пункту меню «Экспорт» в верхнем меню.
  3. Определяете способ экспорта. Учитывая то, что все настройки по умолчанию сохраняются, можно использовать «Быстрый» вариант. «Обычный» я выбираю только, если нужно сжать файл.
  4. Проверьте чтобы были выделены все таблицы базы WordPress для переноса.
  5. Если указан «Обычный» вариант, то можно определить компрессию при экспорте.
  6. В самом низу страницы кликаете «Ок».

В итоге приложение создаст дамп БД и предложит сохранить его на компьютере. Все настройки, как видите, устанавливаются изначально, и в 99% случаев ничего менять не нужно.

Процесс импорта еще проще. Допустим, у вас уже имеется пустая БД сайта, созданная в cPanel, куда требуется перенести всю информацию из прошлой. Порядок действий:

  1. Заходим в PhpMyAdmin и выбираем новую БД.
  2. В верхнем меню кликаете по пункту «Импорт».
  3. После нажатия на кнопку «Choose File» выбираете на своем компьютере SQL файл для импорта.
  4. Жмете «Ок» внизу страницы.

После успешного завершения процедуры увидите соответствующее сообщение, а справа под названием новой БД отобразится список созданных таблиц. На этом миграция wordpress базы завершена. После возвращаетесь к остальным этапам переноса сайта, если вы им занимались. 

РекомендацииConsiderations

Чтобы обеспечить целостность работы пользователей и приложений при перемещении базы данных на другой экземпляр сервера, необходимо повторно создать некоторые или все метаданные базы данных.When you move a database onto another server instance, to provide a consistent experience to users and applications, you might have to re-create some or all the metadata for the database. Дополнительные сведения см. в статье Управление метаданными при обеспечении доступности базы данных на другом экземпляре сервера (SQL Server).For more information, see Manage Metadata When Making a Database Available on Another Server Instance (SQL Server).

Некоторые функции компонента Компонент SQL Server Database EngineSQL Server Database Engine изменяют способ, с помощью которого Компонент Database EngineDatabase Engine хранит информацию в файлах базы данных.Some features of the Компонент SQL Server Database EngineSQL Server Database Engine change the way that the Компонент Database EngineDatabase Engine stores information in the database files. Эти функции зависят от конкретных выпусков SQL ServerSQL Server.These features are restricted to specific editions of SQL ServerSQL Server. База данных, содержащая данные функции, не может быть перемещена в выпуск SQL ServerSQL Server , который их не поддерживает.A database that contains these features cannot be moved to an edition of SQL ServerSQL Server that does not support them. Используйте динамическое административное представление sys.dm_db_persisted_sku_features чтобы просмотреть список всех зависящих от выпуска функций, включенных в текущей базе данных.Use the sys.dm_db_persisted_sku_features dynamic management view to list all edition-specific features that are enabled in the current database.

Для выполнения процедур, описанных в данном разделе, необходимо логическое имя файлов базы данных.The procedures in this topic require the logical name of the database files. Это имя можно получить из столбца name представления каталога sys.master_files .To obtain the name, query the name column in the sys.master_files catalog view.

Начиная с SQL Server 2008 R2SQL Server 2008 R2, полнотекстовые каталоги интегрированы в базу данных, а не хранятся в файловой системе.Starting with SQL Server 2008 R2SQL Server 2008 R2, full-text catalogs are integrated into the database rather than being stored in the file system. Полнотекстовые каталоги теперь перемещаются автоматически при перемещении базы данных.The full-text catalogs now move automatically when you move a database.

Перенос сайта

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

На старом сервере

Сначала перенесем файлы сайта.

Заходим на сервер через ssh, удобно логиниться через быстрые ярлыки. А если более профессионально и безопасно, то через SSH ключ.

Переходим в директорию, которую будем архивировать:

cd /home/admin/web/ploshadka.net/public_html/

Запаковываем в .tar.gz (сохраняем только папку сайта, без полного пути):

tar -cvvzf site.tar.gz ./

Переносим архив сайта на другой сервер:

scp site.tar.gz ssh root@111.11.11.11:/home/admin/web/ploshadka.net/public_html/

При первом подключении к стороннему серверу появится сообщение о том, что надо внести уникальный отпечаток, чтобы в последствии доверять этому серверу. Надо ответить yes.

The authenticity of host ‘111.11.11.11 (111.11.11.11)’ can’t be established. ECDSA key fingerprint is 01:al:39:bm:19:ds:32:59:ns:49:fm:ds:59:18:38:23. Are you sure you want to continue connecting (yes/no)?

Затем вводим пароль доступа от нового сервера:

Warning: Permanently added ‘111.11.11.11’ (ECDSA) to the list of known hosts. root@111.11.11.11’s password:

После чего файл будет скопирован на новый сервер.

У меня при команде scp показывает ошибку:

ssh: No such file or directory

Но, если перед ней указано что-то вроде:

100%  600MB  10.5MB/s   00:57

Значит, что наш резервный файл был скопирован удачно и в нужное место.

Я не знаю с чем связано уведомление No such file or directory, когда при этом всё копируется. Может баг такой. Если вдруг директории такой и в самом деле нет, то в этом случае никакого копирования не произойдет.

Удаляем бакам на старом месте. Он нам больше не нужен.

rm -f /home/admin/web/ploshadka.net/public_html/site.tar.gz

На новом сервере

Заходим на новый сервер. А затем переходим в директорию в которую хотим распаковать архив:

cd /home/admin/web/ploshadka.net/public_html/

Распаковываем в эту папку все файлы:

tar -xvvzf /home/admin/web/ploshadka.net/public_html/site.tar.gz
Для запоминания этого набора букв, будет полезным знать их назначения.

xvvzf расшифровывается как: x — распаковка, vv — подробный вывод результатов, z — формат файла gz, f — файл.

Удаляем наш бэкап файл:

rm -f /home/admin/web/ploshadka.net/public_html/site.tar.gz

Все команды вместе

На старом сервере:

cd /home/admin/web/ploshadka.net/public_html/ tar -cvvzf site.tar.gz ./ scp site.tar.gz ssh root@111.11.11.11:/home/admin/web/ploshadka.net/public_html/ (ввести пароль от нового сервера) rm -f /home/admin/web/ploshadka.net/public_html/site.tar.gz

На новом:

cd /home/admin/web/ploshadka.net/public_html/ tar -xvvzf /home/admin/web/ploshadka.net/public_html/site.tar.gz rm -f /home/admin/web/ploshadka.net/public_html/site.tar.gz

Экспорт базы данных MySQL в файл дампа

Oracle предоставляет утилиту с именем mysqldump, которая позволяет легко экспортировать структуру базы данных и данные в файл дампа SQL. Используйте следующую команду:

Несколько заметок:

Мы используем флаг –single -action, чтобы избежать блокировки базы данных при экспорте данных . Это позволит вам продолжить обновление данных в вашей старой базе данных при экспорте файла дампа. Обратите внимание, что новые данные, которые будут обновлены после того, как процесс экспорта уже запущен, не будут доступны в экспортированном файле дампа.
Обязательно замените реальным именем базы данных перед запуском команды.
Не забудьте ввести свои учетные данные пользователя вместо «user» и «Password» в команде. Убедитесь, что у пользователя есть разрешения на резервное копирование базы данных.

Перенос базы данных Альта-ГТД вместе с дополнительными базами ЭД

Если требуется перенести базу данных Альта-ГТД вместе с дополнительными базами ЭД, то необходимо:

1. Создать средствами программы Альта-ГТД резервную копию базы данных вместе с дополнительными базами. Для этого необходимо выполнить Сервис — Администратор SQL — Бэкап SQL базы данных, после чего утвердительно ответить на вопрос о необходимости резервного копирования дополнительных ЭД-баз. После того, как операция по созданию резервных копий дополнительных баз будет завершена, программа выдаст информационное окно с описанием всех созданных бэкап-файлов. Эти файлы, а также бэкап-файл рабочей базы данных необходимо перенести на другой SQL-сервер.

2. Восстановить базы данных из резервных копий. Если на сервере уже имеется БД с таким названием, то ее необходимо восстановить с другим названием (см. раздел 1).

3. Если при восстановлении была переименована рабочая база данных, тогда необходимо для всех дополнительных баз выполнить скрипт:

4. Если при восстановлении была переименована одна или несколько дополнительных баз, то для каждой из них необходимо выполнить скрипт

UPDATE .. SET = «Новое_Имя_Доп_Базы» WHERE = «Старое_Имя_Доп_Базы»

Здравствуйте, дорогие и уважаемые читатели моего блога! Сегодня мне бы хотелось рассказать вам о том, как перенести базу данных mysql на хостинг.

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

7 ответов

16

Скопируйте файлы базы данных из папки MySQL (в старой папке xampp), за исключением share, bin и script, см. прикрепленное изображение, чтобы увидеть, какие файлы нужно скопировать (только файлы с зеленым ящиком) и заменить все эти файлы базы данных в новом установленном каталоге xampp в папке MySQL.

Перезапустите xampp запустите MySQL и откройте базу данных и таблицу, чтобы убедиться, что она работает.

Ответ дал

29 дек. 2016, в 16:52
Поделиться

6

Да.
Вы можете использовать инструмент командной строки

Сохранение базы данных

Считывание обратно:

Я предполагаю, что каталог mysql bin доступен через командную строку. и должны быть записаны без скобок.

Ответ дал

25 март 2012, в 14:06
Поделиться

В PhPmyAdmin перейдите к Экспортировать и экспортировать на один компьютер, а затем использовать импорт на другом

sql script — лучший вариант. но любая работа действительно

Ответ дал

25 март 2012, в 14:30
Поделиться

Вы можете сбросить базу данных с помощью mysqldump из командной строки или PHPMyAdmin, если вы ее установили, а затем импортировать на свой компьютер для друзей.

Ответ дал

25 март 2012, в 13:54
Поделиться

какова ваша версия и настройки данных? datadir по умолчанию имеет значение C:\Program Files\MySQL\MySQL Server 5.0\data​​p >

вы можете просто закрепить эту папку и разархивировать ее на новом сервере (с тем, что сервер mysql отключил оба сервера) в том же месте и запустить там сервер mysql. Это предполагает, что ваш параметр datadir на обоих серверах одинаковый.

Ответ дал

25 март 2012, в 13:28
Поделиться

перейдите по этому адресу http://127.0.0.1/ и следующий phpmyadmin
выбрать базу данных
и нажмите на экспорт и выберите столбец…
и нажмите на кнопку go

скопируйте файл на сервер и перейдите на phpmyadmin на сервер и щелкните по импорту и добавьте базу данных файлов
и наслаждаться им.

Ответ дал

25 март 2012, в 12:54
Поделиться

Вы можете открыть в и выгрузить БД в файл, затем отправить его на другой компьютер и импортировать его в тоже.

Ответ дал

25 март 2012, в 12:37
Поделиться

Ещё вопросы

  • 123Предупреждение PHP: POST Content-Length 8978294 байтов превышает ограничение 8388608 байтов в Unknown в строке 0
  • 21Какой самый эффективный способ написать сложный контент-фильтр?
  • 19Скомпилированный PHP 7 отсутствует расширение MySQL в WordPress
  • 105Как я могу установить значение по умолчанию столбца метки времени на текущую метку времени с миграциями Laravel?
  • 108Laravel Неизвестная колонка «updated_at»
  • 44Таблица миграции Laravel уже существует, но я хочу добавить новые, а не старые
  • 38получение значения столбца дополнительной сводной таблицы laravel
  • 33Как объединить три стола по красноречивой модели Laravel
  • 30Laravel 5.2 — использование строки в качестве пользовательского первичного ключа для Eloquent Table становится 0
  • 69PHP + PDO + MySQL: как вернуть целочисленные и числовые столбцы из MySQL как целые и числовые значения в PHP?

4 ответа

28

  1. Завершение работы mysql.
  2. Переместите все файлы в вашем текущем каталоге данных в новое место (проверьте местоположение в шаге 3 — ).
  3. Найдите (он находится в каталоге установки mysql). Измените значение параметра , чтобы указать на новое местоположение.
  4. Запустите mysql.

5

Хотя вы запрашиваете окна, здесь — это хорошие направления для тех, кто заканчивается здесь ищет направления linux /ubuntu:

Предположения:

  • У вас есть данные mysql на внешнем /usb /альтернативном диске , возможно, с компьютера, который умер или старой установки
  • Вы хотите перенести его на свою новую установку Ubuntu локально

4

Решение 1:

  1. Прежде всего, сделайте резервную копию своих данных с помощью mysqldump.
  2. Если вы устанавливаете Mysql Server из официального пакета, вы можете сделать это, запустив программу MySQLINstanceConfig.exe из каталога bin вашего сервера.
  3. Импортировать данные

Второе решение (не рекомендуется, но работает на одном компьютере)

  1. Остановить сервер Mysql.
  2. Скопировать данные из каталога данных в новый каталог
  3. Откройте файл my.cnf (в моем случае «C: \ ProgramData \ MySQL \ MySQL Server 5.5 \ my.ini»)
  4. найдите строку типа datadir = «C: \ ProgramData \ MySQL \ MySQL Server 5.5 \ data \» и измените путь к вашему новому местоположению
  5. Запустите свой сервер

Начиная с версии 5.6 MySQLInstanceConfig.exe больше не распространяется. Эта функциональность заменяется установщиком. http://bugs.mysql.com/bug.php?id=66306

2

Для Windows, начиная с MySQL Installer 1.4.6 (2015-04-07) , расположение данных может быть указано в разделе реестра, в котором указано расположение файл, поэтому, если данные изначально были установлены в не по умолчанию, файл не будет находиться в .

Расположение значений реестра (по крайней мере, с MySQL 5.6):

— это , который указывает на папку, в которой находятся файлы приложений MySQL; по умолчанию:

— это , который указывает на папку, где находится ; по умолчанию:

Кроме того, путь к файлу включен в служебную команду в этом разделе реестра:
в значении .

Значение по умолчанию для этой строки:

Итак, основная причина заключается в том, что для перемещения файлов данных в этом сценарии вам необходимо выполнить шаги, отправленные @ITCuties с некоторыми дополнениями.

Вот полные шаги:

  1. Завершение работы mysql.
  2. Просмотрите приведенный выше параметр , чтобы найти текущее местоположение файла , и если вы также хотите переместить обновите путь и переместите файл на этот новый путь.
  3. Если вы меняете местоположение файла , вам необходимо обновить путь в ключе реестра служб, перечисленных выше.
  4. Откройте файл , найдите параметр . Переместите файлы из этого пути к пути, в котором вы хотите, чтобы данные находились в нем, а затем обновите параметр с помощью этого нового пути.
  5. Запустите mysql.

Использование распространенных инструментовUse common tools

Используйте общие служебные программы и средства, такие как MySQL Workbench или mysqldump, для удаленного подключения и восстановления данных в базе данных Azure для MySQL.Use common utilities and tools such as MySQL Workbench or mysqldump to remotely connect and restore data into Azure Database for MySQL. Используйте эти инструменты на своем клиентском компьютере, подключенном к Интернету, чтобы подключиться к базе данных Azure для MySQL.Use such tools on your client machine with an internet connection to connect to the Azure Database for MySQL. Для обеспечения безопасности используйте подключение с SSL-шифрованием, а также см. статью SSL-соединения в базе данных Azure для MySQL.Use an SSL encrypted connection for best security practices, see also Configure SSL connectivity in Azure Database for MySQL. При переносе в базу данных Azure для MySQL не нужно перемещать файлы дампа в особое облачное расположение.You do not need to move the dump files to any special cloud location when migrating to Azure Database for MySQL.

Рекомендации по производительностиPerformance considerations

Для оптимизации производительности при дампе больших баз данных мы рекомендуем ознакомиться с рекомендациями ниже.To optimize performance, take notice of these considerations when dumping large databases:

  • Используйте параметр в mysqldump при выполнении дампа баз данных.Use the option in mysqldump when dumping databases. Исключите триггеры из файлов дампа, чтобы избежать сбоев запуска команд триггера во время восстановления данных.Exclude triggers from dump files to avoid the trigger commands firing during the data restore.
  • Используйте параметр , чтобы задать режим изоляции транзакций REPEATABLE READ и отправлять на сервер инструкцию SQL START TRANSACTION перед созданием дампа данных.Use the option to set the transaction isolation mode to REPEATABLE READ and sends a START TRANSACTION SQL statement to the server before dumping data. Формирование дампа нескольких таблиц в одной транзакции приведет к использованию дополнительных ресурсов хранилища во время восстановления.Dumping many tables within a single transaction causes some extra storage to be consumed during restore. Параметры и являются взаимоисключающими, так как LOCK TABLES приводит к неявной фиксации всех ожидающих транзакций.The option and the option are mutually exclusive because LOCK TABLES causes any pending transactions to be committed implicitly. Для формирования дампа больших таблиц используйте параметр с параметром .To dump large tables, combine the option with the option.
  • Используйте многострочный синтаксис с несколькими списками VALUE.Use the multiple-row syntax that includes several VALUE lists. Это позволяет уменьшить размер файла дампа и ускорить операции вставки при перезагрузке файла.This results in a smaller dump file and speeds up inserts when the file is reloaded.
  • Используйте параметр в mysqldump при выполнении дампа баз данных, чтобы данные были добавлены в сценарий в порядке первичных ключей.Use the option in mysqldump when dumping databases, so that the data is scripted in primary key order.
  • Используйте параметр в mysqldump при выполнении дампа данных, чтобы отключить ограничения для внешнего ключа перед загрузкой.Use the option in mysqldump when dumping data, to disable foreign key constraints before load. Отключение проверок внешнего ключа обеспечивает значительный прирост производительности.Disabling foreign key checks provides performance gains. Включите ограничения и проверьте данные после загрузки, чтобы обеспечить целостность данных.Enable the constraints and verify the data after the load to ensure referential integrity.
  • Используйте секционированные таблицы, когда это необходимо.Use partitioned tables when appropriate.
  • Загрузка данных в параллельном режиме.Load data in parallel. Не выполняйте слишком много параллельных операций, так как можно достигнуть лимита ресурсов. Отслеживайте ресурсы с помощью метрик, доступных на портале Azure.Avoid too much parallelism that would cause you to hit a resource limit, and monitor resources using the metrics available in the Azure portal.
  • Используйте параметр в mysqlpump при выполнении дампа баз данных для создания индекса после загрузки данных таблиц.Use the option in mysqlpump when dumping databases, so that index creation happens after tables data is loaded.
  • Используйте параметр в mysqlpump, чтобы опустить предложения for parallelism и SQL SECURITY из инструкций CREATE для представлений и хранимых процедур.Use the option in mysqlpump to omit definer and SQL SECURITY clauses from the create statements for views and stored procedures. При перезагрузке файла дампа он создает объекты, использующие значения по умолчанию и безопасность SQL.When you reload the dump file, it creates objects that use the default DEFINER and SQL SECURITY values.
  • Скопируйте файлы резервной копии в большой двоичный объект Azure или хранилище Azure и выполните восстановление из них, что должно быть намного быстрее, чем восстановление через Интернет.Copy the backup files to an Azure blob/store and perform the restore from there, which should be a lot faster than performing the restore across the Internet.

Сайты не MediaWiki

Если перед вами стоит схожая задача, но для другого движка, то суть решения и сложности с которыми столкнетесь остаются теми же. Поэтому предложенные здесь решения во многом вам помогут. Пожалуй, единственное отличие и основная трудность будет оставаться в переносе текста статей. Однако, скорее всего, у вашего движка также есть способы осуществлять перенос содержимого через промежуточные структуры путём создания и загрузки дампа базы данных. Первым делом нужно проверить такую возможность. Если этого нет, то можно написать небольшую программу с подключением к обоим СУБД. Так как SQLite и MySQL очень распространены, то думаю не будет ошибкой сказать, что во всех широко используемых языках программирования существуют библиотеки для работы с ними. По крайней мере для PHP, С, С#, Perl, Python, Java это так.

В случае с MediaWiki, как мы увидели, переход с СУБД SQLite на MySQL не такой уж сложный и долгий.

Создание файла резервной копии из командной строки с помощью mysqldumpCreate a backup file from the command-line using mysqldump

Чтобы создать резервную копию существующей базы данных MySQL на локальном сервере или виртуальной машине, выполните команду ниже:To back up an existing MySQL database on the local on-premises server or in a virtual machine, run the following command:

Необходимо указать следующие параметры:The parameters to provide are:

— имя пользователя базы данных; Your database username

— пароль для базы данных (обратите внимание, что между «-p» и паролем нет пробела); The password for your database (note there is no space between -p and the password)

— имя базы данных; The name of your database

— имя файла резервной копии базы данных; The filename for your database backup

— параметр mysqldump. The mysqldump option

Например, чтобы создать резервную копию базы данных с именем testdb на сервере MySQL с именем пользователя testuser и без пароля и сохранить ее в файл testdb_backup.sql, используйте приведенную ниже команду.For example, to back up a database named ‘testdb’ on your MySQL server with the username ‘testuser’ and with no password to a file testdb_backup.sql, use the following command. Команда создает резервную копию базы данных в файле с именем , который содержит все инструкции SQL, необходимые для повторного создания базы данных.The command backs up the database into a file called , which contains all the SQL statements needed to re-create the database.

Чтобы выбрать для создания резервной копии конкретные таблицы в базе данных, укажите имена этих таблиц в виде списка, разделенного пробелами.To select specific tables in your database to back up, list the table names separated by spaces. Например, чтобы создать резервную копию только для таблиц table1 и table2 из базы данных testdb, используйте этот пример:For example, to back up only table1 and table2 tables from the ‘testdb’, follow this example:

Чтобы создать резервную копию сразу нескольких баз данных, используйте параметр —databases и укажите имена этих баз данных в виде списка, разделенного пробелами.To back up more than one database at once, use the —database switch and list the database names separated by spaces.

Разница между реализацией SQL языка в SQLite и MySQL

В нашей конкретной задаче не имеет значения в чём различается функционал SQLite и MySQL, для нас важно чем отличаются SQL команды в этих СУБД, так как в конечном счёте работа с любой СУБД сводится к выполнению последовательности этих команд в её среде. С их помощью создаются, изменяются и удаляются все объекты, а также записываются и считываются данные

Несмотря на существующие стандарты языка SQL, каждая СУБД вносит что-то своё в его реализацию. Рассматриваемые нами СУБД не соответствуют стандартам по-разному, поэтому при подготовке команд SQLite для MySQL нужно будет:

  • Удалить строки (Некоторые парсеры удаляют ещё строки «CREATE UNIQUE INDEX» и «COMMIT;», но это не обязательно, так как обе команды есть в MySQL.):
    • PRAGMA
    • BEGIN TRANSACTION;
    • sqlite_sequence
    • DELETE FROM sqlite_sequence
    • INSERT INTO sqlite_sequence
  • Заменить:
    • AUTOINCREMENT на AUTO_INCREMENT
    • Все значения логических полей с ‘t’ на ‘1’ и с ‘f’ на ‘0’
    • Символ » на ` – т.е. двойную кавычку заменить на апостроф (кроме как в текстовых полях, где эти символы могут использоваться как часть текста).

Всё это можно было бы доверить парсеру (тем более, что их для SQLite создано уже довольно много), преобразующему синтаксис по известным нам правилам, но последнее из перечисленных условий является самым проблемным. Оно делает невозможным корректное автоматическое преобразование синтаксиса, так как в текстах сайта вполне вероятно могут встретится оба упомянутых символа в непредсказуемых комбинациях. Кроме того, задача парсера осложняется ещё и тем, что в статьях переносимого сайта могут встречаться SQL выражения, которые, конечно, же надо обрабатывать, но объяснить это парсеру очень трудно. Такая ситуация вынуждает нас использовать более долгий

Ссылка на основную публикацию