Security Teams



:::
  Ответ в темуСоздание новой темыСоздание опроса

> PHP: split со слешами
cl0ne
Дата 26.01.2007 - 23:29
Цитировать сообщение
Offline



Activist
**

Профиль
Группа: -users-
Сообщений: 67
Пользователь №: 4685
Регистрация: 21.11.2006



Рейтинг:
(0%) -----


Есть строка, хочу разбить ее на массив из подстрок, разделенных запятыми. Но последовательности "\\" и "\," должны быть заменены на "\" и "," соответсвенно и не должны учитываться при разбиении, по этой причине split() не подходит. Например, строка
Код
I\\t\,will,be\,hard,to\,split,this,string

Должна быть превращена в массив
Код
I\t,will
be,hard
to,split
this
string

Помогите пожалуйста.
PMПисьмо на e-mail пользователю
Top
drmist
Дата 27.01.2007 - 00:15
Цитировать сообщение
Offline



Professional
*****

Профиль
Группа: -users-
Сообщений: 1165
Пользователь №: 222
Регистрация: 14.04.2005



Рейтинг:
(0%) -----


Код
function ar_delete_item($ar, $pos) {
   return array_merge($pos ? array_slice($ar, 0, $pos) : array(), array_slice($ar, $pos + 1));
 }

function slash_split($pattern, $str) {
 $ar = split($pattern, $str);
 for($i = 0; $i < count($ar);) {
   $ar[$i] = str_replace("\\\\", $pattern, $ar[$i]);
   $len = strlen($ar[$i]);
   $t = $len && $ar[$i][$len - 1] === "\\";
   $ar[$i] = str_replace($pattern, "\\", substr($ar[$i], 0, $len - $t)).($t ? $pattern : "");
   if($i && substr($ar[$i-1], -1) === $pattern) {
     $ar[$i-1] .= $ar[$i];
     $ar = ar_delete_item($ar, $i);
   } else $i++;
 }
 return $ar;
}

Пример использования:
Код
$str = "I\\\\t\\,will,be\\,hard,to\\,split,this,string,";
$ar = slash_split(",", $str);
print_r($ar)


--------------------
Когда нельзя еще больше хочется...
PMСайт пользователя
Top

Опции темы Ответ в темуСоздание новой темыСоздание опроса