PHP 刪除所需要的資料並分拆合併
因為公司要求,把類似的字串分拆合併輸出到表單上
原始資料
COVER: FU = SAN-403-M.GREY
LID: SATIN = 08A-WHITE
PAD CODE: RG001(P19)
PAD: FC = SAN-806-WHITE
CUSTOMER OWN PACKING QUANTITY
輸出結果 :
第一條 : SAN-403-M.GREY / 08A-WHITE / SAN-806-WHITE
第二條: FU / SATIN / FC
<?php
class 裝箱單過濾用
{
public $原始值;
function 過濾非指定值($過濾設定值,$原始值)//第一步
{
$處理後值=mb_split('\r\n',$原始值);// 先分解跳行
$過濾處理後值 = preg_grep($過濾設定值, $處理後值);//找到所需資料,並剔除非所需資料
return implode(",",array_filter($過濾處理後值));//合併後值
}
function 去除指定字串($去除字串陣列,$去除值)
{
$陣列拆出值=mb_split(',',$去除值);
$j=count($陣列拆出值)-1;
$i = 0;
while ($i <= $j) {
if (!empty($陣列拆出值[$i])){
$去除陣列後值[]=str_replace($去除字串陣列,"",$陣列拆出值[$i]);//去除字串變成空白
}$i++; }
return implode(",",$去除陣列後值);
}
function 擷取符號右邊字串($去除指定字串)
{
$陣列拆出值=mb_split(',',$去除指定字串);
$j=count($陣列拆出值)-1;
$i = 0;
while ($i <= $j) {
if (!empty($陣列拆出值[$i])){
if(strpos($陣列拆出值[$i],'=') !== false){ $去除陣列後值[]=substr(strrchr($陣列拆出值[$i], "="), 1); }else{ $去除陣列後值[]=$陣列拆出值[$i]; }//
}$i++; }
return $去除陣列後值;
}
function 擷取符號左邊字串($去除定義,$去除指定字串)
{
$陣列拆出值=mb_split(',',$去除指定字串);
$j=count($陣列拆出值)-1;
$i = 0;
while ($i <= $j) {
if (!empty($陣列拆出值[$i])){
$c[]= str_replace('=',"",str_replace($去除定義,"",$陣列拆出值[$i]));
}
$i++;
}return $c;
}
}
$裝箱單過濾用 = new 裝箱單過濾用();
$原始值=' COVER: FU = SAN-403-M.GREY
LID: SATIN = 08A-WHITE
PAD CODE: RG001(P19)
PAD: FC = SAN-806-WHITE
CUSTOMER OWN PACKING QUANTITY
';
$過濾設定值="/=/";
$去除值=$裝箱單過濾用::過濾非指定值($過濾設定值,$原始值);
$去除字串陣列=array("COVER: ","LID: ","PAD: ");
$去除指定字串= $裝箱單過濾用::去除指定字串($去除字串陣列,$去除值);
echo implode(" / ",$裝箱單過濾用::擷取符號右邊字串($去除指定字串));
echo '<br>';
$去除指定字串=$裝箱單過濾用::去除指定字串($去除字串陣列,$去除值);
$去除定義=$裝箱單過濾用:: 擷取符號右邊字串($去除指定字串);
echo implode("/ ",$裝箱單過濾用::擷取符號左邊字串($去除定義,$去除指定字串));
?>