如何用PHP处理指定分隔符后的字符?
如何用PHP把类似下面的字符串380|35358|10296|105241|31198|20182|18134|9122|15处理成下面的格式380,358,296,24...
如何用PHP把类似下面的字符串
380|35
358|10
296|105
241|31
198|20
182|18
134|9
122|15
处理成下面的格式
380,358,296,241,198,182,134,122
也就是说把分隔符“ | ”和后面的数字替换成 “ , ”号,注意最后一行字符串不要逗号。
请各位高手指点一下,最好能写出代码,谢谢了!
非常感谢楼下四位同学的回答,初步解决了我的问题,但是又遇到一个新的问题,不知道如何把程序取得的值赋给$str
我使用的是PHPCMS V9,使用下面的标签得到全部的值
{pc:special action="content_list" specialid="$specialid" typeid="$typeid" listorder="2"}
{loop $data $r}
{$r['curl']}
{/loop}
{/pc}
{$r['curl']}循环得到全部的值是:380|35 358|10 296|10 241|10 198|10 182|10 134|10 122|15 87|10 614|18 129|17 968|24 967|35 966|35 965|35 964|34 963|34 962|35 961|35 960|35
我写成 $str={$r['curl']}时,只能取到一值,例如 960
怎么样才能把上面全部的值赋给$str ? 展开
380|35
358|10
296|105
241|31
198|20
182|18
134|9
122|15
处理成下面的格式
380,358,296,241,198,182,134,122
也就是说把分隔符“ | ”和后面的数字替换成 “ , ”号,注意最后一行字符串不要逗号。
请各位高手指点一下,最好能写出代码,谢谢了!
非常感谢楼下四位同学的回答,初步解决了我的问题,但是又遇到一个新的问题,不知道如何把程序取得的值赋给$str
我使用的是PHPCMS V9,使用下面的标签得到全部的值
{pc:special action="content_list" specialid="$specialid" typeid="$typeid" listorder="2"}
{loop $data $r}
{$r['curl']}
{/loop}
{/pc}
{$r['curl']}循环得到全部的值是:380|35 358|10 296|10 241|10 198|10 182|10 134|10 122|15 87|10 614|18 129|17 968|24 967|35 966|35 965|35 964|34 963|34 962|35 961|35 960|35
我写成 $str={$r['curl']}时,只能取到一值,例如 960
怎么样才能把上面全部的值赋给$str ? 展开
4个回答
展开全部
<?php
$s = '
380|35
358|10
296|105
241|31
198|20
182|18
134|9
122|15';
for($i=0;$i<strlen($s); $i++)
{
if ($s{$i} == '|')
{
$i++;
for(; $s{$i} != "\n"; )
{
$i++;
if ($i == strlen($s))
{
break;
}
}
}
$ss .= $s{$i};
}
print str_replace("\n", ',' ,$ss); //380,358,296,241,198,182,134,122
更多追问追答
追问
我不知道如何把程序取得的值赋给$s,上面有详细的说明,麻烦帮我再看一下,谢谢了
追答
{loop $data $r}
{$r['curl']}
{/loop}
这个是循环语句,和foreach($a as $v){} 差不多的。你要获得全部的值,试试$str .= {$r['curl']}看看。phpcms我没用过。不知道它的模板引擎这样写能不能运行。
展开全部
先把数字分开explode('|',num); 然后在按你的要求区数字用逗号隔开。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
<?php
$str='380|35
358|10
296|105
241|31
198|20
182|18
134|9
122|15';
$arr=explode("\n",$str);
$arr=preg_replace('/\|\d+/','',$arr);
$str=implode(',',$arr);
echo $str;
?>
$str='380|35
358|10
296|105
241|31
198|20
182|18
134|9
122|15';
$arr=explode("\n",$str);
$arr=preg_replace('/\|\d+/','',$arr);
$str=implode(',',$arr);
echo $str;
?>
追问
我用你的方法,遇到一个新的问题,不知道如何把程序取得的值赋给$str,上面有详细的说明,麻烦帮我再看一下,谢谢了
追答
我只能说 你连最基本的语法都不懂
没用过 phpcms 不知道他的模版方式 不过下面的可以试试
{pc:special action="content_list" specialid="$specialid" typeid="$typeid" listorder="2"}
{/pc}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
<?php
$str='380|35
358|10
296|105
241|31
198|20
182|18
134|9
122|15';
$arr=explode("\n",$str);
$newStr ="";
foreach ($arr as $key=>$val){
$newStr .=substr($val, 0, strpos($val, "|")+1);
}
$newStr = rtrim($newStr, "|");
$newStr = str_replace("|", ",", $newStr);
echo $newStr;
?>
我试过了,是你想要的答案
$str='380|35
358|10
296|105
241|31
198|20
182|18
134|9
122|15';
$arr=explode("\n",$str);
$newStr ="";
foreach ($arr as $key=>$val){
$newStr .=substr($val, 0, strpos($val, "|")+1);
}
$newStr = rtrim($newStr, "|");
$newStr = str_replace("|", ",", $newStr);
echo $newStr;
?>
我试过了,是你想要的答案
追问
我遇到一个新的问题,不知道如何把程序取得的值赋给$str,上面有详细的说明,麻烦帮我再看一下,谢谢了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询