将用空格格式化的文本转换为html

时间:2014-03-12 00:08:06

标签: php excel excel-vba csv magmi vba

我有一个csv文件,我需要在基于php的系统上导入 - Magento是具体的。有一个字段包含产品的描述,并且是用于缩进的空白格式以及用于列表项的破折号( - )。我可以使用<pre>标签并按原样显示它,但是当我得到csv文件时,不知何故,可以放在一行中的行已经移动到另一行。因此,尝试用<br/>(或使用nl2br函数)替换\ r \ n没有真正的成功,因为我不希望能够在一行中显示的内容以两行显示。< / p>

我不确定这是否可以通过PHP,VBA例程在Excel或某些Magento扩展中实现(我目前正在使用MAGMI并且它没有这样的设施)。所以我提出这个问题的公开选择是提供其中任何一个的解决方案。

任何人都有这方面的提示吗?

EDIT ::

应如下所示:

  

Lorem ipsum dolor坐下来,精神上的精神。

     
      
  • Praesent cursus eu eros quis laoreet。
  •   
  • 在tincidunt massa sed dui aliquam placerat。
  •   
     

Interdum et malesuada fames ac ante ipsum primis in faucibus。 Aliquam a nulla id dui semper tristique。 Vivamus rut​​rum auctor neque,eu tincidunt magna dapibus vitae。整数felis mi,luctus ut mollis at,mollis nec lacus。 Vestibulum et dictum turpis。在neque sed mauris semper hendrerit中的Praesent。

     
      
  • Vivamus rhoncus magna ipsum
  •   
  • 坐下来听听。 Sed semper dui quis accumsan suscipit。
  •   
  • Donec eu lacus sed dolor fermentum fermentum。
  •   
  • Curabitur iaculis molestie吃了一份bibendum。
  •   

这意味着:

  • 文本不应包含换行符,除非它有一个换行符。
  • 文本的宽度应该取决于容器而不是空白格式(不知何故,文本很窄,即使我在csv上调整列宽也不会扩展)#
  • 如果可能,破折号应该替换为列表项封装,但这不是目前最大的问题。

文字目前看起来像这样:

  

Lorem ipsum dolor坐下来,精神上的精神。 - Praesent cursus eu eros quis laoreet。 - 在tincidunt assa sed dui aliquam placerat。 Interdum et malesuada fames ac ante ipsum primis in faucibus。 Aliquam a nulla id dui semper tristique。 Vivamus rut​​rum auctor neque,eu tincidunt magna dapibus vitae。整数felis mi,luctus ut mollis at,mollis nec lacus。 Vestibulum et dictum turpis。在neque sed mauris semper hendrerit中的Praesent。 - Vivamus rhoncus magna ipsum - 坐在amet ullamcorper lectus eleifend ut。 Sed semper dui quis accumsan suscipit。 - Donec eu lacus sed dolor fermentum fermentum。 - Curabitur iaculis molestie吃了一份bibendum。

* 如果我使用<pre>标记,则看起来像这样*

Lorem ipsum dolor sit amet, 
consectetur adipiscing elit. 
- Praesent cursus eu eros 
quis laoreet. 
- In tincidunt massa sed dui 
aliquam placerat. 

Interdum et malesuada fames 
ac ante ipsum primis in faucibus. 
Aliquam a nulla id dui semper 
tristique. Vivamus rutrum auctor 
neque, eu tincidunt magna 
dapibus vitae. Integer felis mi, 
luctus ut mollis at, mollis nec 
lacus. Vestibulum et dictum turpis. 
Praesent in neque sed mauris 
semper hendrerit. 

- Vivamus rhoncus magna ipsum 
- sit amet ullamcorper lectus 
eleifend ut. Sed semper dui 
quis accumsan suscipit. 
- Donec eu lacus sed dolor 
fermentum fermentum. 
- Curabitur iaculis molestie ante 
a bibendum.

所以我的产品描述看起来像是一个单独的无格式块(我明白因为那里没有html标签)或者如果我尝试保留空白格式,它看起来太窄(不覆盖容器的整个宽度) )。

希望这足够详细。

P.S。::

就像ckeditor允许用户输入文本一样,按回车键然后在它的后面,ckeditor会用段落标签替换它们。可能这是在正则表达式的背面操作,可以参考?有人知道吗?

2 个答案:

答案 0 :(得分:1)

您正在寻找的是Markdown to HTML转换器。 Magmi没有可以做到这一点的插件,但你可以轻松自己写一个。

  1. 创建Magmi插件文件夹和文件。
  2. 在HTML PHP库中包含Markdown,例如:https://github.com/michelf/php-markdown
  3. 使用processItemBeforeId()功能在插件中动态更新说明,如下所示:

    public function processItemBeforeId(&$item,$params=null)
    {
        //Use the Markdown class library to convert the description.
        $updated_description = Markdown::defaultTransform($item['description']);
    
        //Update the description of the item before it gets imported.
        $item['description'] = $updated_description;
    }
    
  4. 启用自定义Magmi插件,导入时应立即开始转换说明。

答案 1 :(得分:0)

您是否尝试使用基本正则表达式替换添加html标签? (使用preg_replace按照适当的标记来捕获和替换列表元素,例如)

相关问题