ホームページ >バックエンド開発 >PHPチュートリアル >preg_replace の正規マッチングの改善を求める

preg_replace の正規マッチングの改善を求める

WBOY
WBOYオリジナル
2016-06-23 13:45:211000ブラウズ

6fcd65432555f2905248d386047ea192
dd70c6c0cc7bf1821958d9bcf7b051a394b3e26ee717c64999d7867364b1b4a3
e388a4556c0f65e1904146cc1a846bee
「美川玲」は広州の出版社で、本名は李玲です。故郷の風景を記念して「美川玲」をペンネームにしました。華南師範大学を卒業し、10年間雑誌の記者および編集者として働き、当時の健康本ブームの推進者の一人でした。多くの働く母親と同じように、彼女も6年前に娘を出産したことをきっかけに育児問題に関心を持ち始め、児童書の出版に携わった。 94b3e26ee717c64999d7867364b1b4a3
#p#群衆に従わない#e#e388a4556c0f65e1904146cc1a846bee 要するに、私を優先し、自分の経済的能力を決して超えない姿勢を持たなければなりません。幼児教育は魔法であるという考えを持って、盲目的に幼児教育機関を選択しないでください。 94b3e26ee717c64999d7867364b1b4a3
#p#高等教育を受けるために予期せぬ勉強をする#e#
09d62d78f0ab1a8730385433c67f7245
やがて、早期教育が盛んであることに気づきました。 3歳から6歳までのお子様向けのクラス。 94b3e26ee717c64999d7867364b1b4a3
';

$body=preg_replace('normal', '',$body);
echo $body; これは DEDECMS の内容です。全文 ページ、つまりこのページの記事はページ分割されていません。コンテンツ内のすべてのページ分割マークは主に次のとおりです。
//1. ページ分割マーク「Subtitle#e#」。段落の始まり
//2. 真ん中のページネーション マークは「#p#、群衆 #e# に従うな」
//説明: #e# はタイトル、#p# はもちろんページネーションです削除には #e# 文字と #p# 文字も含まれます。


?>



これに関して、xuzuning は通常のルールを書きました
$body=preg_replace('/(?:^|#p#).*?#e#s*/s', '' , $body);

しかし、私のニーズは問題​​を見落としていました。つまり、現在の段落の先頭に「subtitle#e#」というページネーション タイトルがありません。次のようなものです。

2aba99207482df7e1f1f988edc661cdb 3dc960555849b7d4a72a1c30fcb69a5f94b3e26ee717c64999d7867364b1b4a3 p>
」は広州の出版社で、本名は李玲(リー・リン)。故郷の風景を記念して「美川玲」をペンネームにしました。華南師範大学を卒業し、10年間雑誌の記者および編集者として働き、当時の健康本ブームの推進者の一人でした。多くの働く母親と同じように、彼女も6年前に娘を出産してから子育てに関心を持ち始め、児童書の出版に携わった。 94b3e26ee717c64999d7867364b1b4a3
#p#群衆に従わない#e#e388a4556c0f65e1904146cc1a846bee 要するに、私を優先し、自分の経済的能力を決して超えない姿勢を持たなければなりません。幼児教育は魔法であるという考えを持って、盲目的に幼児教育機関を選択しないでください。 94b3e26ee717c64999d7867364b1b4a3
#p#高等教育に進学するために予期せぬ勉強#e#
3cadb9833e6008bdce58af14f846243f
ワン・ジーが成長するにつれて、高齢者向けの早期教育クラスがブームになっていることに気づきました。 3歳から6歳まで。 94b3e26ee717c64999d7867364b1b4a3
';

$body=preg_replace('normal', '',$body);
echo $body; これは DEDECMS の内容です。全文 ページ、つまりこのページの記事はページ分割されていません。コンテンツ内のすべてのページ分割マークは主に次のとおりです。
//1。段落の始まり
//2. 真ん中のページネーション マークは「#p#、群衆 #e# に従うな」
//説明: #e# はタイトル、#p# はもちろんページネーションです削除には #e# 文字と #p# 文字も含まれます。


?>

これにより、最初のページのコンテンツがすべてフィルタされます。段落の先頭にページネーションのタイトルマークがない場合、最初のページのコンテンツは削除されません。




ディスカッションへの返信 (解決策)

#p# と #e# が常に同じ行にあることに気づきました

body=preg_replace('/(?:^|#p#).*?#e#\s*/', '',$body);


崇拝!おいおい。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。