首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在字符串php中的几个空格后添加多个竖线、逗号等

如何在字符串php中的几个空格后添加多个竖线、逗号等
EN

Stack Overflow用户
提问于 2015-11-11 16:28:11
回答 3查看 138关注 0票数 0

有没有人可以帮我解决这个问题,我也尝试了很多regexp和substr,但是我不能把它弄清楚。我的要求是在1、28、48、62之后添加| sign in字符串,依此类推!我正在转换一个文本文件为我们的客户关系管理psv格式,有人能帮我吗?问候

代码语言:javascript
复制
$final = preg_replace("/^(.{0})/", "$1|", $line[0]);

此代码仅匹配每个字符串的一个位置,我想替换为6-10个特定列,我也尝试过,但不起作用

代码语言:javascript
复制
$final = preg_replace("/^(.{0}{28}{48})/", "$1| $2| $3|", $line[0]);

但我在这个表达式中的解决方案是,如果它可以再输入一个示例:

代码语言:javascript
复制
$string = "80293066640226135465        NRIC                011064608711  HAZRY BIN ABDULLAH                                                                                                                                    0138258856                                                                                                                                                                                                                                                                                                                                                                                                                     LOT 7083,LORONG 6B1 JLN MATANG                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                TAMAN MATANG JAYA                                                                                                       93050,KUCHING,SAR                                           93050               SAR                                     ABO TAYANGAN HEBAT FOR VALUE PACK,ABO TAYANGAN HEBAT HD,AOTG + CATCH UPMALAY                         URB4929                1                   2015090404/09/2015      04/11/2015      138.0000                                          BASIC FAMILY HD PACKAGE,HD SERVICES FOR VALUE PACK,RECORDING (XTV) FOR                     

";所需输出:

代码语言:javascript
复制
80293066|640226135465|NRIC|011064608711|HAZRY BIN ABDULLAH||0138258856||||$ $ $LOT 7083,LORONG 6B1 JLN MATANG$|TAMAN MATANG JAYA $93050$,KUCHING,SAR $SAR $||ABO TAYANGAN HEBAT FOR VALUE PACK,ABO TAYANGAN HEBAT HD,AOTG + CATCH UP|MALAY|URB4929||1|20150904|04/09/2015|04/11/2015|138.0000||BASIC FAMILY HD PACKAGE,HD SERVICES FOR VALUE PACK,RECORDING (XTV) FOR|||

因此,一些字段将具有|符号,而另一些字段将具有$。

EN

回答 3

Stack Overflow用户

发布于 2015-11-11 17:37:58

你可以使用下面的语法,也许有更简化的方式,点的个数匹配你需要放置的字符个数的"|“符号。

代码语言:javascript
复制
preg_replace("/^(........)(.........)(...................)/", "|$1|$2|$3", $line[0]);

在我使用的vi中

代码语言:javascript
复制
:%s/^\(........\)\(.........\)\(...................\)/|\1|\2|\3/g
票数 3
EN

Stack Overflow用户

发布于 2015-11-11 17:38:05

也许你有这样的输入:

代码语言:javascript
复制
973293273    john joe       downtown london uk  6499273        

因为你有一个固定长度的文件,所以可以使用这个模式:

代码语言:javascript
复制
^(.{13})(.{15})(.{20})(.{15})$

并将其替换为以下内容:

代码语言:javascript
复制
|$1|$2|$3|$4

Demo

票数 2
EN

Stack Overflow用户

发布于 2015-11-11 17:32:16

如果每行每列都有固定的大小(第一列10个字符,第二列20个字符等),请注意固定和最大值之间的差异,每一列的长度必须完全相同

代码语言:javascript
复制
function char_replace($input , $replace , $position)
        {
            if(is_array($position))
            {
                $output = $input;
                foreach($position as $character_to_change)
                {
                    $tmp = substr($output , 0 , $character_to_change -1);
                    $tmp .= $replace;
                    $tmp .= substr($output , $character_to_change );
                    $output = $tmp;
                }
                return $output;
            }
            else
            {
                $output = substr($input , 0 , $position -1);
                $output .= $replace;
                $output .= substr($input , $position );
                return $output;
            }
        }
        //example with array
        $string = "12345";
        echo char_replace($string,"|",array(2,4));
            //example
            $string = "abcdef";
            echo char_replace($string,"|",2);

此函数可以很好地帮助您。执行以下操作:$result= char_replace(char_replace($input,"|",48),"|",12);或者只使用for运行它

编辑:处理多个位置的数组以及单个int数组

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33646696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档