如何用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 ?
展开
 我来答
guohao214215
2013-07-01 · 超过13用户采纳过TA的回答
知道答主
回答量:38
采纳率:0%
帮助的人:36.1万
展开全部
<?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我没用过。不知道它的模板引擎这样写能不能运行。
百度网友f30c93f
2013-07-01 · 超过25用户采纳过TA的回答
知道答主
回答量:155
采纳率:0%
帮助的人:73.1万
展开全部
先把数字分开explode('|',num); 然后在按你的要求区数字用逗号隔开。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友8dce392c02
推荐于2017-10-03 · TA获得超过1099个赞
知道小有建树答主
回答量:587
采纳率:66%
帮助的人:313万
展开全部
<?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,上面有详细的说明,麻烦帮我再看一下,谢谢了
追答
我只能说 你连最基本的语法都不懂
没用过 phpcms 不知道他的模版方式 不过下面的可以试试
{pc:special action="content_list" specialid="$specialid" typeid="$typeid" listorder="2"}

{/pc}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友3913c14
2013-07-01 · 超过10用户采纳过TA的回答
知道答主
回答量:46
采纳率:0%
帮助的人:35.5万
展开全部
<?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,上面有详细的说明,麻烦帮我再看一下,谢谢了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式