phppregsplit
1. php拆分字元串
可以用正則和字元串分詞~,下面這個是按照逗號或空格分詞~
$str = '豆瓣,人人,開心';
$str4 = str_replace(',',',',$str); //將中文逗號轉換成英文逗號,很重要
$key = preg_split('/[\s,]+/',$str4); //分詞功能
foreach($key as $value){
echo $value;
echo '<br />';
}
2. 探討PHP函數split()如何使用正則表達式切割字元串
如何使用PHP函數sprintf()將字元串格式化PHP函數preg_split的正確使用方法解讀PHP函數explode()的具體使用方法PHP函數implode()與explode()函數的不同PHP類CMS如何自動獲取關鍵字說明array split ( string $pattern, string $string [, int $limit] )提示preg_split() 函數使用了 Perl 兼容正則表達式語法,通常是比PHP函數split()更快的替代方案。
3. 用php的 preg_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時,也可以正常工作.
4. PHP函數preg_split()出錯誤
preg正則表達式必須有一個定界符,它可以是除元字元外的任何字元(位於表達式開始前和結束後。
作用是把表達式與模式修飾符分開。比如 0abc0i 表示匹配不分大小寫的abc)。
正則式里只有一個 ,pcre認為它是定義的定界符,於是「正則表達式不存在」就出現了。
解決方法是在 前後各加一個字元,比如 "/ /"
5. php的 preg_split 函數分割字元串時 出現 亂碼
亂碼很可能的因素是 preg_split 這個函數引起的 ,因為這個函數對漢字的支持不好
建議你採用mb_ 系列的函數
6. php中有關preg_split問題
1、你要知道preg_split()函數的意思。(意思為通過一個正則表達式分隔給定字元串)
2、你要了解正則表達式語法
/[\s,]+/ 詳細分析:
a、最左則和最右側的「/」是分割符號
b、\s表示匹配任何空白字元,包括空格、製表符、換頁符等。與 [ \f\n\r\t\v] 等效
c、[ ]中括弧表示之間的任何一個,也就是說,中括弧內的任何一個字元用來匹配
純手工錄入!!!
7. 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
)
8. php中preg_split()函數的PREG_SPLIT_NO_EMPTY到底有什麼作用啊
PREG_SPLIT_NO_EMPTY如果設定了本標記,則
preg_split
()
只返回
非空
的成分。
匹配出的內容裡面如果存在為空的不返回。
9. PHP正則 PHP Warning: preg_split(): Unknown modifier '+' in……
缺少模式定界符
<?php
preg_split("/[ ]+/",$line);
//www.hi-docs.com/php/preg_split.html
?>