【问题标题】:variable read from text file and passed to smarty shows up like "Home<i>\r</i><i>\n</i>"?从文本文件读取并传递给 smarty 的变量显示为“Home<i>\r</i><i>\n</i>”?
【发布时间】:2010-07-13 22:46:59
【问题描述】:

我有一个看起来像这样的代码。

        $language = "eng";
        $append = "_sidebar.txt";
        $read_text_file = "languages\\$language$append";
        $sidebar = file($read_text_file);   

        $smarty->assign("sidebar_link",$sidebar);

为什么smarty中的所有变量都是这样的:

Smarty_Variable Object (3)
->value = Array (13)
  0 => "XX<i>\r</i><i>\n</i>"
  1 => "XX<i>\r</i><i>\n</i>"
  2 => "XX<i>\r</i><i>\n</i>"
  3 => "XX<i>\r</i><i>\n</i>"
  4 => "XX<i>\r</i><i>\n</i>"

XX 代表单个单词。 \r\n从何而来??

【问题讨论】:

    标签: php arrays variables smarty template-engine


    【解决方案1】:

    \r\n 只是从文件中读取的行末尾的 Windows 换行符(即“回车”键)。

    您可以删除文件中的所有换行符,也可以按照this forum post 上的说明应用条形(或变体)过滤器,让 Smarty 为您过滤掉控制字符。

    【讨论】:

    • 试过了,但不明白。我添加了 require('libs/plugins/outputfilter.trimwhitespace.php');并尝试了 $test = smarty_outputfilter_trimwhitespace_replace("@@@SMARTY:TRIM:SCRIPT@@@",$_script_blocks, $sidebar);但不知道 $_script_blocks 是什么意思?有没有更简单的方法来删除这些东西。我也试过 strip_tags($sidebar) ,但显示为空白!
    【解决方案2】:

    “\n”是表示换行或换行符的字符,在 Windows 系统中通常以“\r”开头(因为我猜他们喜欢为每个换行符添加额外的字符)。如果没有换行符,所有文本都会像“XXXXXXXXXX”一样排列在一起,因为无法分辨每行的换行位置。

    【讨论】:

      猜你喜欢
      • 2011-03-15
      • 2021-09-26
      • 2023-03-17
      • 2022-01-13
      • 1970-01-01
      • 1970-01-01
      • 2014-02-22
      • 1970-01-01
      • 2019-03-15
      相关资源
      最近更新 更多