phpstrsplit
⑴ php分割數組函數 split和explode的區別
一句話總結這三個分割函數的
explode用字元串分割,split和 preg_split用正則分割.
效率方面: explode最快, 其次preg_split最後split.
split()函數
用正則表達式來把字元串拆分並返回數組,如果出錯則返回false。
用法: split(string $pattern,string $string [,int $limit])
pattern:相應的正則表達式
string:字元串
limit:指定字元串分割的最大數目
例子1:
<?php
$expression="3*5+12/6-15";
$pattern="/";
$limit=3;
$parts=split($pattern,$expression,$limit);
print_r($parts);
?>
結果:
Array
(
[0] => 3*5+12
[1] => 6-15
)
例子2:
<?php
$expression="3*5+12/6-15";
$pattern="[+/]";
$limit=3;
$parts=split($pattern,$expression,$limit);
print_r($parts);
?>
結果:
Array
(
[0] => 3*5
[1] => 12
[2] => 6-15
)
preg_split() 函數
用 Perl 兼容正則表達式語法,通常比 split() 更快。
preg_split:用正則表達式分隔字元串
4.3.0版本:增加了標記PREG_SPLIT_OFFSET_CAPTURE.
4.0.5版本:增加了標記PREG_SPLIT_DELIM_CAPTURE.
<?php
$str = 'string';
$chars = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY);
print_r($chars);
?>
以上程序輸出樣式:
Array
(
[0] => s
[1] => t
[2] => r
[3] => i
[4] => n
[5] => g
)
<?php
$str = 'hypertext language programming';
$chars = preg_split('/ /', $str, -1, PREG_SPLIT_OFFSET_CAPTURE);
print_r($chars);
?>
以上程序輸出樣式:
Array
(
[0] => Array
(
[0] => hypertext
[1] => 0
)
[1] => Array
(
[0] => language
[1] => 10
)
[2] => Array
(
[0] => programming
[1] => 19
)
explode()函數
使用一個字元串分割另一個字元串
<?php
// 示例 1
$pizza = "piece1 piece2 piece3 piece4 piece5 piece6";
$pieces = explode(" ", $pizza);
var_mp($pieces);
?>
輸出:
Array
(
[0] => one
[1] => two|three|four
)
⑵ php如何平均分割字元串 例分割為四部分
$str = 'asdhjiuygfrewsghbvfdfswe';
$len = strlen($str);
$part = ($len/4);
$arr = str_split($str, $part);
print_r($arr);
若想要平均分成4部分,必須得保證字元串的總長度是4的整數倍。
⑶ php怎麼把字元串指定字元分割成數組
<?php
$str="1|2|3|4|5|";
$var=explode("|",$str);
print_r($var);
?>
$var=explode("|",$str);
把$str按|進行分割
php還有其他的把字元串指定字元分割成數組
str_split(string,length)參數 描述
string 必需。規定要分割的字元串。
length 可選。規定每個數組元素的長度。默認是 1。
json_decode()這個函數也可以把字元串分割成數組 (第二個參數為true才行)
⑷ php字元串轉數組
可以使用str_split將字元串轉為數組,str_split用法如下:
str_split — 將字元串轉換為數組
arraystr_split(string$string[,int$split_length=1])
string:輸入字元串。
split_length:每一段的長度。
返回值
如果指定了可選的 split_length 參數,返回數組中的每個元素均為一個長度為 split_length的字元塊,否則每個字元塊為單個字元。
如果 split_length 小於 1,返回 FALSE。如果 split_length 參數超過了 string 超過了字元串 string 的長度,整個字元串將作為數組僅有的一個元素返回。
使用示例:
$str="HelloWorld";
$arr=str_split($str);
print_r($arr);
以上代碼將輸出
Array
(
[0] => H
[1] => e
[2] => l
[3] => l
[4] => o
[5] =>
[6] => W
[7] => o
[8] => r
[9] => l
[10] => d
)
⑸ php "str_split"函數分割中文字元串亂碼問題……
一個解決方案.
測試發現,preg_split對中文(多位元組)的分隔符處理可能真的存在問題.
原因可能是正則匹配時不能正常分隔一個多位元組字元(猜測).
但我實驗用半形(英文)的分隔符就工作得很好.
於是
我在處理待分隔的文本前先對文本進行替換,把中文的句點和逗號都替換成英文半形的.然後再使用preg_split,暫時發現工作得不錯.
以下是我的測試代碼.
<?php
$test = <<<EOF
記者從有關人士處獲悉,嫦娥二號發射的各項准備工作全部就緒,昨日經專家組評審,衛星、火箭、發射場、測控等系統均情況正常,具備發射條件。今天起,西昌衛星發射中心的加註手將為火箭加註燃料。
據一位航天專家介紹,因為地球和月球都在轉動的緣故,所以地月之間的最佳交匯點每年僅出現3次,而這3次便是發射探月衛星的最佳節點,經過觀測,今年3次的出現時間分別為10月1日、10月2日和10月3日,而最佳發射窗口則是1日晚7時,2日晚8時和3日晚10時,其中國慶日晚7時為佳中之佳。
針對媒體稱10月1日發射窗口時間為晚6時59分57秒,該專家告訴本報記者,早3秒並非提前3秒發射,而是將這3秒時間預留出來,作為現場指揮員在發送倒計時口令的緩沖時間。(記者萬強)
EOF;
//$input = $_POST[$content]; //........................獲取要分割的字元串
$test = str_replace(",",',',$test);
$test = str_replace("。",'.',$test);
$mode="/[,|.]/s"; //......................用「逗號」 和 「句號」 分割字元串
$output = preg_split($mode,$test,-1);
print_r($output);
?>
============
樓主不防試試,我的代碼是gb2312的字串.
經測試在,字元串為UTF8時,也可以正常工作.
⑹ php7 中使用哪個函數替換split()函數
preg_split() 取代split的正則用法
str_split()取代split的普通字串用法
⑺ php的str_split問題!!我要分割成60個一組,但是第一行總是只給我分割出59個!怎麼回事!
改一下參數吧 多調整兩次你就知道每個參數的作用了
⑻ php拆分字元串
可以用正則和字元串分詞~,下面這個是按照逗號或空格分詞~
$str = '豆瓣,人人,開心';
$str4 = str_replace(',',',',$str); //將中文逗號轉換成英文逗號,很重要
$key = preg_split('/[\s,]+/',$str4); //分詞功能
foreach($key as $value){
echo $value;
echo '<br />';
}
⑼ php 有沒有代替str_split這個函數的函數
你究竟需要什麼呀,str_split就能完成你的需求,例子程序:
$str='123';
list($a,$b,$c)=str_split($str);
類似功能的PHP函數有用固定分隔符分隔的函數explode、以正則表達式分割的函數preg_split。