|
- это метасимвол в регулярных выражениях (что означает «или»), поэтому его необходимо экранировать, если он предназначен для буквального соответствия.Кроме того, [...]
является синтаксисом регулярных выражений для класса символов, что означает «любой из символов между [...]
). И, наконец, вам нужно разделители вокруг регулярного выражения.
Вы можете попробовать
preg_match_all("/[^\[\]\|]+/")
для сопоставления со всеми не |
/ [
/ ]
строками, т.е. всем, кроме |
, [
или ]
.