Php 用正则表达式替换pagebreak标记

Php 用正则表达式替换pagebreak标记,php,regex,magento,preg-replace,Php,Regex,Magento,Preg Replace,以下是我正在努力实现的目标。我们Magento网店的CMS编辑器有一个按钮,可以插入标签。我想用这个,来创建一个阅读更多的功能。我想我会搜索/替换此标签来完成此操作 我想在标签中搜索,我希望人们能够随时使用这个标签 假设这是我的原始HTML: 这是我的示例文本,但在“单击更多”之后,这应该是可读的,因为“单击更多可能” 我想把它转换成这样的东西。。我认为第一个是最容易实现的,也许是在一个while循环中进行preg_替换?第二种可能是更干净/更好的html(嵌套更少) 这是我的示例文本,但在

以下是我正在努力实现的目标。我们Magento网店的CMS编辑器有一个按钮,可以插入
标签。我想用这个,来创建一个阅读更多的功能。我想我会搜索/替换此标签来完成此操作

我想在
标签中搜索,我希望人们能够随时使用这个标签

假设这是我的原始HTML:

这是我的示例文本,但在“单击更多”之后,这应该是可读的,因为“单击更多可能”

我想把它转换成这样的东西。。我认为第一个是最容易实现的,也许是在一个while循环中进行preg_替换?第二种可能是更干净/更好的html(嵌套更少)

这是我的示例文本,但在“单击更多”之后,这应该是可读的,因为“单击更多可能”

这是我的示例文本,但在“单击更多”之后,这应该是可读的,因为“单击更多可能”

所以我想到了这个,但我认为应该有一种方法可以用一个替换来完成

$pattern='\\(.+?)\(.+?)\\\\s';
$count=true;
而($count){
$text=preg_replace($pattern,$1$2,$text,-1,$count);
}

如果您不需要检查它是否在
标签中,您可以使用如下内容:

str_replace ( "<!-- pagebreak -->" , '<p>$1 <a href="#">read more</a><div class="hidden">$2</div></p>' , $text, $count );
stru替换(“,”$1$2

”,$text$count);

它比系统轻得多。

我想这就可以了:

$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);
$pattern='\(.*?)\(.*?)\

\s'; $text=“一些测试隐藏内容

第二次测试lolo更多隐藏内容

”; echo preg_replace($pattern,$1$2,$text,-1,$count);
我必须检查一下,否则我可能会意外地“隐藏”页面的其余部分。通过这种方式,我可以“强制”用户仅在段落中使用此选项。我担心,如果您真的需要检查指针是否位于段落中,我只能想到您的选项。是的,但您在这里假设一个段落中只存在一个分页符。我的问题是,用户可能会在一个段落中放置两个分页符。
<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>
str_replace ( "<!-- pagebreak -->" , '<p>$1 <a href="#">read more</a><div class="hidden">$2</div></p>' , $text, $count );
$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);