PHP Markdown将最后一块内容标记为h3

时间:2011-06-14 15:53:04

标签: php markdown

我正在使用PHP Markdown(版本1.0.1n,2009年10月更新)以markdown格式显示保存到数据库的文本。我遇到了一个奇怪的问题,它将每个条目的最后一个块标记为H3。但是,当我搜索markdown.php文件时,没有一个H3实例。

以下是我的数据库中的两段文字:

Since its launch, major CPG brands, endemic as well as non-endemic, have flocked to retail websites to reach consumers deep in the purchase funnel through shopping media. In this session, you will hear about:

- The prioritization of shopping media for CPG brands.

- A case study of brands on Target.com on how this retailer (and others) have introduced a new channel for brand marketers to engage consumers where they are making the majority of purchase decisions: online.

- How CPG brands are leveraging real-time data from shopping media to capture consumer insights and market trends.

在这一个中,它正确标记LI项,但在最终LI中,它将实际文本标记为H3。

Beyond the actual money she saves, this consumer is both empowered and psychologically gratified by getting the best value on her everyday purchases. It is essential for both marketers and retailers to focus on what motivates and activates this consumer. 

Diane Oshin will share insights on what influences her shopping behavior and then identify specific tools that activate her to buy.

在这一篇中,从Diane Oshin开始的整个段落被标记为H3。

这是非常奇怪的事情:当我做一个视图源时,它们都被正确标记;只有在使用Inspect Element时才会看到H3。但是,在实际显示中很明显正在应用H3标签:

示例1 example 1

示例2 example 2

任何人都可以帮助我吗?

更新

根据下面的评论,我查找了H标签的实例。我找到了这些功能,但不知道这是否是导致问题的原因。它们是整个文件中唯一一个似乎正在创建任何类型的标头标记的地方。

function doHeaders($text) {
        # Setext-style headers:
        #     Header 1
        #     ========
        #  
        #     Header 2
        #     --------
        #
        $text = preg_replace_callback('{ ^(.+?)[ ]*\n(=+|-+)[ ]*\n+ }mx',
            array(&$this, '_doHeaders_callback_setext'), $text);

        # atx-style headers:
        #   # Header 1
        #   ## Header 2
        #   ## Header 2 with closing hashes ##
        #   ...
        #   ###### Header 6
        #
        $text = preg_replace_callback('{
                ^(\#{1,6})  # $1 = string of #\'s
                [ ]*
                (.+?)       # $2 = Header text
                [ ]*
                \#*         # optional closing #\'s (not counted)
                \n+
            }xm',
            array(&$this, '_doHeaders_callback_atx'), $text);

        return $text;
    }
    function _doHeaders_callback_setext($matches) {
        # Terrible hack to check we haven't found an empty list item.
        if ($matches[2] == '-' && preg_match('{^-(?: |$)}', $matches[1]))
            return $matches[0];

        $level = $matches[2]{0} == '=' ? 1 : 2;
        $block = "<h$level>".$this->runSpanGamut($matches[1])."</h$level>";
        return "\n" . $this->hashBlock($block) . "\n\n";
    }
    function _doHeaders_callback_atx($matches) {
        $level = strlen($matches[1]);
        $block = "<h$level>".$this->runSpanGamut($matches[2])."</h$level>";
        return "\n" . $this->hashBlock($block) . "\n\n";
    }

1 个答案:

答案 0 :(得分:1)

我无法使用你给出的版本重现你描述的内容:

<?php
include(__DIR__.'/php-markdown/markdown.php');


$testText = 'Since its launch, major CPG brands, endemic as well as non-endemic, have flocked to retail websites to reach consumers deep in the purchase funnel through shopping media. In this session, you will hear about:

- The prioritization of shopping media for CPG brands.

- A case study of brands on Target.com on how this retailer (and others) have introduced a new channel for brand marketers to engage consumers where they are making the majority of purchase decisions: online.

- How CPG brands are leveraging real-time data from shopping media to capture consumer insights and market trends.
';

$resultText = Markdown($testText);

var_dump($resultText);

输出看起来像你期望的那样

string(649) "<p>Since its launch, major CPG brands, endemic as well as non-endemic, have flocked to retail websites to reach consumers deep in the purchase funnel through shopping media. In this session, you will hear about:</p>

<ul>
<li><p>The prioritization of shopping media for CPG brands.</p></li>
<li><p>A case study of brands on Target.com on how this retailer (and others) have introduced a new channel for brand marketers to engage consumers where they are making the majority of purchase decisions: online.</p></li>
<li><p>How CPG brands are leveraging real-time data from shopping media to capture consumer insights and market trends.</p></li>
</ul>
"

我假设其他东西在进入降价解析器之前或之后篡改数据。但基于数据,降价解析器不会创建<h3>标记。你必须看看其他地方:(