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