2017-10-11 66 views
-1

我需要在peaces中爆炸一个字符串并删除一些字符。最后,我想把这个字符串水平放在一起。如何爆炸在foreach循环并implode到一个字符串

这是我尝试:

$string = "34 asdfadfadf.*****23 vgadfsdfasdf.*****46 asdfasdfadf."; 
$arr = explode("*****", $string); 
foreach ($arr as $val) { 

$val = trim(substr($val, 0, 2)); 
$arr_neu[] = $val;                  
} 
$array_neu = implode(" ", $arr); 
fwrite($flog, "\nstring neu:" . $array_neu); 

,这就是我得到:
34 asdfadfadf ***** 23 vgadfsdfasdf ***** 46 asdfasdfadf。 34 23 46

我只需要数字34 23 46!

谢谢!

+2

'$ array_neu = preg_replace函数( '/ [^ \ d] /', '',$字符串);' – brevis

+0

它的工程!但是有时候会有数字进入字符串。 – Beni

回答

3

只需使用preg_replace功能:

$s = '34 asdfadfadf.*****23 vgadfsdfasdf.*****46 asdfasdfadf.'; 
$result = trim(preg_replace('/[^0-9 ]+/', '', $s)); 

print_r($result); 

输出:

34 23 46 

----------

如果字符串可以包含多个连续的空格 - 改变上述做法如下:

$result = trim(preg_replace('/[^0-9]+/', ' ', $s)); 
0

在代码结束时,你正在使用错误的变量破灭数据

更改您的代码

$string = "34 asdfadfadf.*****23 vgadfsdfasdf.*****46 asdfasdfadf."; 
$arr = explode("*****", $string); 
foreach ($arr as $val) { 

$val = trim(substr($val, 0, 2)); 
$arr_neu[] = $val;                  
} 
$array_neu = implode(" ", $arr_neu); // <--------change here. Use $arr_neu 
fwrite($flog, "\nstring neu:" . $array_neu); 
+0

我现在得到这个错误。致命错误:第6行中的字符串不支持[]运算符 – Beni

+0

您会显示更新后的代码吗? –

+0

这是我的新代码: $ string =“34 asdfadfadf。***** 23 vgadfsdfasdf。***** 46 asdfasdfadf。”; $ arr = explode(“*****”,$ string); foreach($ arr as $ val){ $ val = trim(substr($ val,0,2)); $ arr_neu [] = $ val; } $ arr_neu = implode(“”,$ arr_neu); fwrite($ flog,“\ nstring neu:”。$ arr_neu); 错误:致命错误:第6行中的字符串不支持[]运算符//第6行== $ arr_neu [] = $ val; – Beni

0

你只需要改变implode$arr_neu代替$arr

<?php 

$string = "34 asdfadfadf.*****23 vgadfsdfasdf.*****46 asdfasdfadf."; 
$arr = explode("*****", $string); 
foreach ($arr as $val) { 
    $val = trim(substr($val, 0, 2)); 
    $arr_neu[] = $val;                  
} 
$array_neu = implode(" ", $arr_neu); 
fwrite($flog, "\nstring neu:" . $array_neu);