这是我努力实现的目标。我们的Magento网上商店的CMS编辑器有一个插入<!-- pagebreak -->
标签的按钮。我想使用它来创建阅读更多功能。我以为我会搜索/替换此标签来执行此操作。
我想在<p>
代码内搜索,我希望人们可以随时使用此代码。
假设这是我原来的HTML:
<p>This is my example text, but<!-- pagebreak --> this should be readable after 'click more'<!-- pagebreak --> with even more click more possible</p>
我想把它转换成这样的东西..我认为第一个是最容易实现的,也许是通过在while循环中执行preg_replace?第二个可能是更清洁/更好的HTML(更少嵌套)
<p>This is my example text, but <a href="#" onClick='#'>read more</a><div class='hiddenreadmore' id='hiddenreadmore-1'> this should be readable after 'click more'<a href="#" onClick='#'>read more</a><div class='hiddenreadmore' id='hiddenreadmore-2'> with even more click more possible</div></div></p>
或
<p>This is my example text, but <a href="#" onClick='#'>read more</a><div class='hiddenreadmore' id='hiddenreadmore-1'> this should be readable after 'click more'<a href="#" onClick='#'>read more</a></div><div class='hiddenreadmore' id='hiddenreadmore-2'> with even more click more possible</div></p>
所以我想出了这个,但我认为应该有一种方法来替换它。
$pattern = '#\<p\>(.+?)\<\!-- pagebreak --\>(.+?)\<\/p\>#s';
$count = true;
while ($count) {
$text = preg_replace($pattern, '<p>$1 <a href="#">read more</a><div class="hidden">$2</div></p>', $text, -1, $count);
}
答案 0 :(得分:0)
如果您不需要检查它是否在<p>
标签中,您可以使用以下内容:
str_replace ( "<!-- pagebreak -->" , '<p>$1 <a href="#">read more</a><div class="hidden">$2</div></p>' , $text, $count );
这对系统来说要轻得多。
答案 1 :(得分:0)
我想这可以胜任:
$pattern = '#\<p>(.*?)\<!-- pagebreak -->(.*?)\</p>#s';
$text = "<p>some test <!-- pagebreak --> hidden content</p> second test <p>lolo <!-- pagebreak --> more hidden content</p>";
echo preg_replace($pattern, '<p>$1 <a href="#">read more</a><div class="hidden">$2</div></p>', $text, -1, $count);