Задача: убрать символы между одинарных скобок ''
в строке. Это необходимо, например, в случае когда при сплите строки по запятой ,
возникают ошибки т.к. запятая содержится между скобок.
Пример строки:
[12345, 'abc', 'Текст, в одинарных скобках, разделенный, запятыми', '']
При вызове:
echo count(explode(', ', $str));
Мы получим: 7. А нам надо — 4.
Решение:
function str_split_unicode($str, $l = 0) { if ($l > 0) { $ret = array(); $len = mb_strlen($str, "UTF-8"); for ($i = 0; $i < $len; $i += $l) { $ret[] = mb_substr($str, $i, $l, "UTF-8"); } return $ret; } return preg_split("//u", $str, -1, PREG_SPLIT_NO_EMPTY); } $str = "[12345, 'abc', 'Текст, в одинарных скобках, разделенный, запятыми', '']"; $result_str = ''; $flag = false; foreach (str_split_unicode($str) as $ch) { if($ch == "'") $flag = !$flag; if($flag && $ch == ',') $ch = ' '; $result_str .= $ch; } echo $result_str;