preg_replace,BBCODE和新行

时间:2016-02-23 11:32:32

标签: regex preg-replace preg-replace-callback

我正在使用替换方法来制作[产品] ID |文本[/ product],它在我尝试在文本部分中创建新行之前一直很有效。然后它就会中断并且根本不会替换它。

功能: function productBox($ matches){

global $wpdb;

$test = explode("|",$matches[1]);

$loopProductID = $test[0];
$desc = $test[1];

//Variabels to get different info (out commented to save space)

$productHTML = '<div class="flow-item">
                    <div class="flow-product-image"><a href="'.$permalink.'" target="_blank"><img src="'.$thumburl.'" alt="'.$title.'" /></a></div>
                    <div class="flow-product-info">
                        <h3><a href="'.$permalink.'" target="_blank">'.$title.'</a> '.$argang.'</h3>
                        <div style="padding: 5px 0px 10px;">'.$desc.'</div>
                        <div class="flow-product-facts">Art.nr: '.$artnr.' - Pris: '.$prisinklmoms.' kr</div>
                    </div>
                    <div class="clear"></div>
                </div>';

return $productHTML;

}

这就是我调用函数的方式:

$content = get_the_content();
$content = apply_filters('the_content', $content);
$content = str_replace(']]>', ']]&gt;', $content);
$pattern = "/\[product\](.+?)\[\/product\]/";
$content = preg_replace_callback($pattern, 'productBox', $content);

任何可以帮助我的人如何使用文本部分中的新行?更可爱的是重制它,所以它的工作方式就像这样,也许更容易?:[product id =“ID”]文字和更多文字[/ product]

1 个答案:

答案 0 :(得分:0)

只需添加多线修改器:

$pattern = "/\[product\](.+?)\[\/product\]/s";
//                                  here __^