Сначала допустил небольшую ошибку в коде в регулярном выражении: забыл заэкранировать символ ] обратным слешем, чтобы он считался просто литерой, а не концом символьного класса.
Вообще, есть два поведения, которые я ожидал от PHP:
- preg_replace воспримит символ как конец символьного класса, но поскольку открывающей скобки нигде нет, а значит нет и символного класса, сообщит об ошибке в синтаксисе регулярного выражения.
- preg_replace не воспримет скобку как особый символ, а сочтёт обычным символом.
Но произошло нечто третье и неразумное: никакой ошибки не вывелось, но некоторые посты не подошли (match) к регулярному выражению.
Причём картина совершенно случайная (плюсиками указаны посты, которые не исправились за первый проход):
- Код: Выделить всё
Doing replacing:
------------------------------|Processing 0-39.
------------------------------|Processing 40-79.
------------------------------|Processing 80-119.
------------------------------|Processing 120-159.
------------------------------|Processing 160-199.
------------------------------|Processing 200-239.
------------------------------|Processing 240-279.
---------+--------------------|Processing 280-319.
---+--------------------------|Processing 320-359.
------------------------------|Processing 360-399.
-------------+----------------|Processing 400-439.
------------------------------|Processing 440-479.
----+-------------------------|Processing 480-519.
------------------------------|Processing 520-559.
------------------------------|Processing 560-599.
----------+-+-----------------|Processing 600-639.
----------+--+----------+-----|Processing 640-679.
------------------------------|Processing 680-719.
-----++-----------------------|Processing 720-759.
------------------------------|Processing 760-799.
--------------+---------------|Processing 800-839.
------------------------------|Processing 840-879.
------------------------------|Processing 880-919.
------------------------------|Processing 920-959.
------------------------------|Processing 960-999.
------------------------+-----|Processing 1000-1039.
------------------------------|Processing 1040-1079.
-++---------------------------|Processing 1080-1119.
-----------------------+------|Processing 1120-1159.
------------------------------|Processing 1160-1199.
------------------------------|Processing 1200-1239.
---++---+---------------------|Processing 1240-1279.
---++-------------------------|Processing 1280-1319.
------------------------------|Processing 1320-1359.
------------------------------|Processing 1360-1399.
------------------------------|Processing 1400-1439.
---------+--------------------|Processing 1440-1479.
------------------------------|Processing 1480-1519.
-----------------------+------|Processing 1520-1559.
-------+----------------------|Processing 1560-1599.
-+----------------------------|Processing 1600-1639.
------------------------------|Processing 1640-1679.
---+--------+-----------------|Processing 1680-1719.
---------+-------------+--+---|Processing 1720-1759.
----------------+--+-------++-|Processing 1760-1799.
------------------------------|Processing 1800-1839.
------------------------------|Processing 1840-1879.
---------------+--------------|Processing 1880-1919.
---------+--------------------|Processing 1920-1959.
------+-----------------------|Processing 1960-1999.
------------------------------|Processing 2000-2039.
------------------------------|Processing 2040-2079.
--------------------------+---|Processing 2080-2119.
----------------------+-------|Processing 2120-2159.
------------------------------|Processing 2160-2199.
--------------------+---------|Processing 2200-2239.
----------+-------+-+--+------|Processing 2240-2279.
--------------------+---------|Processing 2280-2319.
-------------+--------------+-|Processing 2320-2359.
------------------------------|Processing 2360-2399.
------------------------------|Processing 2400-2439.
------------------------------|Processing 2440-2479.
------------------+-----------|Processing 2480-2519.
--------------+++-------------|Processing 2520-2559.
------------------------------|Processing 2560-2599.
----+-------------------------|Processing 2600-2639.
----+-------------------------|Processing 2640-2679.
-------+--------+-------------|Processing 2680-2719.
------------------------------|Processing 2720-2759.
---------------------+--------|Processing 2760-2799.
------------------------------|Processing 2800-2839.
------------+------+----------|Processing 2840-2879.
------------------------------|Processing 2880-2919.
------------------------------|Processing 2920-2959.
---+--------------------------|Processing 2960-2999.
-----------------+------++----|Processing 3000-3039.
+----------+------------------|Processing 3040-3079.
----+------+------------------|Processing 3080-3119.
--------------------------+---|Processing 3120-3159.
------------------------------|Processing 3160-3199.
------------------------------|Processing 3200-3239.
------------------------------|Processing 3240-3279.
----------++------------------|Processing 3280-3319.
---------------+------------+-|Processing 3320-3359.
------------------------------|Processing 3360-3399.
----+------------------+------|Processing 3400-3439.
------------------------------|Processing 3440-3479.
-------------+----------------|Processing 3480-3519.
---------------------+--------|Processing 3520-3559.
----------+-------------------|Processing 3560-3599.
----------+---------+---------|Processing 3600-3639.
-----------------+---------+--|Processing 3640-3679.
-------------------+----------|Processing 3680-3719.
------------------------------|Processing 3720-3759.
-------+----------------------|Processing 3760-3799.
------------------------------|Processing 3800-3839.
---------++-------------------|Processing 3840-3879.
----------------+-+---------+-|Processing 3880-3919.
-----+------------------------|Processing 3920-3959.
------------------------------|Processing 3960-3999.
------------------------------|Processing 4000-4039.
-----------------------------+|Processing 4040-4079.
--+---------------------------|Processing 4080-4119.
----+---------+---------------|Processing 4120-4159.
--------+--+------------------|Processing 4160-4199.
------------------------------|Processing 4200-4239.
++--------+------------+------|Processing 4240-4279.
----------------+-------+-----|Processing 4280-4319.
------------------------------|Processing 4320-4359.
------------------------------|Processing 4360-4399.
------------------+-----------|Processing 4400-4439.
-----+------------+-----------|Processing 4440-4479.
---------------------+--------|Processing 4480-4519.
------------------------------|Processing 4520-4559.
--------+--+---------+---+----|Processing 4560-4599.
-------+--+-------------------|Processing 4600-4639.
---------------------++-------|Processing 4640-4679.
-----+---------+--------------|Processing 4680-4719.
----+------+-------+----------|Processing 4720-4759.
-------------------+---------+|Processing 4760-4799.
------------------------+-----|Processing 4800-4839.
--------------+------------+--|Processing 4840-4879.
-----+---+--+---+------+------|Processing 4880-4919.
---------------++---------+---|Processing 4920-4959.
------------------+-+---------|Processing 4960-4999.
--------+-----------------+---|Processing 5000-5039.
------------------------------|Processing 5040-5079.
-----------------+------------|Processing 5080-5119.
------+---------------+-------|Processing 5120-5159.
-----+---+--------------------|Processing 5160-5199.
------------------------------|Processing 5200-5239.
----+-------------------------|Processing 5240-5279.
+----+---------+--------------|Processing 5280-5319.
------------------------------|Processing 5320-5359.
------------------------------|Processing 5360-5399.
--------+--------------------+|Processing 5400-5439.
---------------------------+--|Processing 5440-5479.
------------------------+-----|Processing 5480-5519.
---+------------+-+-+---------|Processing 5520-5559.
--------------------+---------|Processing 5560-5599.
+--------------------+---+----|Processing 5600-5639.
------------------------------|Processing 5640-5679.
Странно.