preg_match_all('~[,()^/*+-]~', $e, $m)и preg_split("/\,|\(|\)|\^|\/|\*|\-|\+/",$e); разделяет мне строку в массив по определенным словам. Мне надо разделять строку по словам, отличным от ,()^/*-+ и не отличным от них
например: pi*t+(a/c) в array(array('*','+','/'),array(pi,t,a,c))
Вместо разбиения строки, необходимо найти все совпадения искомых символов с помощью preg_match_all:
// Всё вместе
$e = "a+d+c/t-(a*r)";
preg_match_all('~[^,()^/*+-]+|[,()^/*+-]~', $e, $m);
print_r($m[0]);
// Только все "слова"
preg_match_all('~[^,()^/*+-]+~', $e, $m1);
print_r($m1[0]);
// Только все "символы"
preg_match_all('~[,()^/*+-]~', $e, $m2);
print_r($m2[0]);
См. демо онлайн
Так как в качестве разделителей используется ~, обратный слеш экранировать / не нужно. Так как - помещен в конец символьного класса его экранировать тоже не надо. ^ не в начальной позиции в символьном классе тоже экранировать не надо. ,()*+ в символьных классах трактуются буквально всегда.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости