我在php中得到一个字符串值 -
How are you|1 I am fine|2 That is fine|3
我想将此字符串分解为此整数值。基本上我需要这3个值。
How are you|1
I am fine|2
That is fine|3
有人可以建议我该怎么做。
答案 0 :(得分:5)
尝试使用preg_split()
使用一些正则表达式而不是explode()
:
$arr = preg_split('#(?<=\|\d )(?=[a-z])#i', "How are you|1 I am fine|2 That is fine|3");
将字符串拆分为管道字符 | ,后跟数字,后跟空格。
修改强>
如果空格可以是新行或回车符,请在其中添加或条件:
$arr = preg_split('#(?<=\|\d( |\n|\r))(?=[a-z])#i', "How are you|1 I am fine|2 That is fine|3");
答案 1 :(得分:2)
尝试使用preg_match_all
$str = 'How are you|1 I am fine|2 That is fine|3';
$pattern = '/(\D+)(\d+)/';
$res = preg_match_all($pattern, $str, $matches);
print_r($matches[0]);
答案 2 :(得分:1)
您可以使用65Fbef05
中的技巧在你的情况下将是
$str = 'How are you|1 I am fine|2 That is fine|3';
$del = array(1, 2, 3);
// In one fell swoop...
$arr = explode( $del[0], str_replace($del, $del[0], $str) );
答案 3 :(得分:0)
尝试使用chr(13)作为分隔符进行爆炸。
试试这个循环。
$extras = $db->loadRowList();
$num=sizeof($extras);
for($i=0;$i<$num;$i++)
{
echo "<br>".$extras[$i][0]."<br>";
$arr=explode(chr(13), $extras[$i][0]);
$num1=sizeof($arr);
for($j=0;$j<$num1;$j++)
{
$tmp = explode('|', $arr[$j]);
$num2=sizeof($tmp);
for($k=0;$k<$num2;$k++)
{
echo $tmp[$k]."<br>";
}
}
}