dongnao2048 2013-09-21 12:01
浏览 34
已采纳

在php中替换 换行符

I've written a small bit of php which gets items (products in this case) from an xml feed. I use simplexml_load_file to assign the various parts of the feed to variables.

It's working great and I'm outputting the results to a csv file. The problem I have is that some of the items in the xml are html descriptions and have line feed characters in them. This is breaking the csv as it sees these as new lines.

To solve this I've added an end of line string to each line of the csv and I'm trying to strip out all from the descriptions, then replacing the eol string with a which should make the csv work.

I can do it manually with notepad++ but when trying it with php it doesnt seem to work.

Below is the code I've tried but I might have messed something up as I've never done this before, and it doesn't seem to be working. The resulting csv still has the original line feeds and the eol string is still there.

//Get The Short and Long Descriptions from the $_item in the XML
   $short_Description = $_item->short_description;
   $description = $_item->description;

//OK now we need to firstly remove all the 
 
  from the descriptions and once that's done replace "FEOL," with 
. Easy!

// Lets strip the LF and CR from the descriptions   
    $new_Line = array('
', '
', '');
    $replace = '';

    $short_Description = str_replace($new_Line, $replace, $short_Description);
    $description = str_replace($new_Line, $replace, $description);

// OK now we have one big long line lets add the CR or maybe LF back at the end of each line where we've put the FEOL place holder
    $eol   = 'FEOL,';
    $replace = '';

    $short_Description = str_replace($eol, $replace, $short_Description);
    $description = str_replace($eol, $replace, $description);

Just wondering if their's anything obvious that I'm missing, or maybe I'm going about it all wrong. Any help would be greatly appreciated. Nigel

  • 写回答

2条回答 默认 最新

  • duandao1931 2013-09-21 12:04
    关注

    You are replacing "slash n" and "slash r" instead of LF and CR characters here:

    $new_Line = array('
    ', '
    ', '');
    

    Use double quotes:

    $new_Line = array("
    ", "
    ", "");
    

    You can see the difference yourself:

    <?php
    print '
    ';
    

    Will print:

    While

    <?php
    print "
    ";
    

    Will print a newline character

    Are you sure, that it should be " " and not " "?

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 目前主流的音乐软件,像网易云音乐,QQ音乐他们的前端和后台部分是用的什么技术实现的?求解!
  • ¥60 pb数据库修改与连接
  • ¥15 spss统计中二分类变量和有序变量的相关性分析可以用kendall相关分析吗?
  • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
  • ¥20 神经网络Sequential name=sequential, built=False
  • ¥16 Qphython 用xlrd读取excel报错
  • ¥15 单片机学习顺序问题!!
  • ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上
  • ¥20 关于#anlogic#sdram#的问题,如何解决?(关键词-performance)
  • ¥15 相敏解调 matlab