spliti
(PHP 4 >= 4.0.1, PHP 5)
spliti — Разбивает строку в массив с помощью регулярного выражения без учета регистра
Описание
$pattern
, string $string
[, int $limit
= -1
] )
Разбивает строку string
в массив с помощью регулярного выражения.
Эта функция идентична функции split() за исключением того, что она игнорирует регистр символов при сравнении.
С версии PHP 5.3.0 эта функция считается УСТАРЕВШЕЙ. Крайне не рекомендуется полагаться на эту возможность.
Список параметров
-
pattern
-
Регистронезависимое регулярное выражение.
Если вы хотите разделить строку по символам, которые являются специальными символами регулярного выражения, вам сначала нужно заэкранировать эти символы. Если вы думаете, что функция spliti() (или другая функция для работы с регулярными выражениями) делает что-то странное, пожалуйста, прочитайте файл regex.7, который находится в папке regex/ дитсрибутива PHP. Этот файл находится в формате manpage, поэтому вы можете прочитать его коммандой man /usr/local/src/regex/regex.7.
-
string
-
Строка для разделения.
-
limit
-
Если установлен
limit
, возвращаемый массив будет содержать максимумlimit
элементов, в котором последний элемент содержит всю строкуstring
.
Возвращаемые значения
Возвращает массив строк, каждая из которых является подстрокой
строки string
, образованный с помощью
регистронезависимого разделения регулярным выражением pattern
.
Если встречаются n вхождений pattern
,
возвращаемый массив будет содержать n+1
элементов. К примеру, если вхождений pattern
не будет
найдено, то будет возвращен массив только с одним элементом.
Естественно, это также справедливо, если string
пустая. Если в процессе возникает ошибка,
spliti() возвращает FALSE
.
Примеры
Разделение строки, используя 'a' как разделитель:
Пример #1 Пример spliti()
<?php
$string = "aBBBaCCCADDDaEEEaGGGA";
$chunks = spliti ("a", $string, 5);
print_r($chunks);
?>
Результат выполнения данного примера:
Array ( [0] => [1] => BBB [2] => CCC [3] => DDD [4] => EEEaGGGA )
Примечания
Замечание:
С версии PHP 5.3.0, расширение regex помечено устаревшим и заменено расширением PCRE. Вызов этой функции приведет к ошибке уровня
E_DEPRECATED
. Смотрите список отличий для помощи при конвертировании в PCRE.
Смотрите также
- preg_split() - Разбивает строку по регулярному выражению
- split() - Разбиение строки на массив по регулярному выражению
- explode() - Разбивает строку с помощью разделителя
- implode() - Объединяет элементы массива в строку
Коментарии
To split $cartes which contains data and tabulations:
Doesnt work :
$tab_cartes = split("\\t",$cartes );
But \t = char(9), so, works well:
$tab_cartes = split(Chr(9),$cartes);
Idem for :
\n = char(10)
\r = char(13)
Found in http://www.asp-magazine.com/fr/asp/blitz/blitz4.asp
When using special characters such as the tab placeholder "\t" in the split function, be careful not to escape the slash by adding a slah in front of it. To signify a tab, new line or carriage return use only one slash in front of the character. For example:
$cartes= "one\ttwo\tthree";
$tab_cartes = split("\t",$cartes );
$items = count($tab_cartes);
for ($x = 0; $x < $items; $x++)
{ echo $tab_cartes[$x] . "\n"; }
This example shows the use of spliti.
Here it splits the path of the server as it can be used further.
<?php
require_once 'Beispiel.php';
$seq = new Sequence();
$path = $_SERVER["PATH_INFO"];
echo "PATH: ".$path."<br/>";
echo "Request mode: ".$_SERVER["REQUEST_METHOD"]."<br/>";
$daten = spliti ("/", $path);
echo "get-daten[1] ".$daten[1]."<br/>";
if($_SERVER["REQUEST_METHOD"]== "POST"){
echo "POST".$daten[1];
$seq->setzeSequence($daten[1], $_POST["xml"]);
}
elseif($_SERVER["REQUEST_METHOD"] == "DELETE"){
echo "DELETE".$daten[1];
$seq->loescheSequence($daten[1]);
}
elseif($_SERVER["REQUEST_METHOD"] == "GET"){
$antwort = $seq->holeSequence($daten[1]);
echo "antwort[0]: ".$antwort[0]."<br/>";
foreach($antwort as $mes){
echo "mes ".$mes."<br/>";
}
}
?>