2012-04-10 14 views
0

に置き換えてください。これは私が達成しようとしているものです。 Magento webshopのCMSエディタには、<!-- pagebreak -->タグを挿入するボタンがあります。私はを作成するためにこれを使用したいと思います。の機能をお読みください。私はこのタグを検索/置換すると思った。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> 

私はこのような何かに変換したいと思います..私は最初のものは、多分しばらくに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> 

ですだから私はこの思い付いたが、私は1つが代わると、それを行う方法があるはずだと思います。

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

は、それがシステムに多くのライターです:

$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

はまあそれならば、あなたはそれはあなたがこのようなものを使用することができます<p>タグ内にありますかどうかを確認する必要がいけません。

+0

私がそうでなければ、私は誤って「非表示」ページの残りの部分かもしれないので、それをチェックする必要がありません。このようにして、私はユーザーにこれを段落内でのみ使用するよう強制することができます。 – rolandow

+0

私はあなたが本当に段落にあるために針をチェックする必要がある場合、あなたのオプションは私が考えることができる唯一のものであることを恐れています。 – Manuel

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); 
+0

はい、ここでは、1つの段落にページ区切りが1つしかないと仮定しています。私の問題は、ユーザーが1つの段落に2つのページブレークを配置する可能性があることです。 – rolandow