良いPHPテキストのページ区切り
-
03-07-2019 - |
質問
私は、HIV予防のための情報倉庫サイトに取り組んでいます。多くの協力者がtinyMCE GUIを介して記事を投稿します。
もちろん、グラフィックデザイナーはページの長さを制御したいと考えています。彼らは、ページ内のコンテンツの高さに基づいた自動ページネーションを希望しています。
誰でもこれを管理するためのAJAXコードを見ましたか?
単語やタグの分割を回避するために、文字カウントと後読み正規表現を実行できるPHPコードを誰もが見られなかった場合、
リンクは大歓迎です!
解決
正確である必要がない場合は、単純な単語カウント関数を使用してページを分割する適切な場所を決定できない理由はありません(おそらく、最も近い段落)。投稿に画像があるかどうかに基づいて、画像のサイズを考慮に入れても、ページあたりの単語数を減らすことができます。
しかし、それはugいものになる可能性があります。それを行う最良の方法は、解析可能な記事内のタグでページ区切りを手動で設定できるようにすることです。 [改ページ]のようなものは非常に簡単で、自動化されたソリューションが達成するよりもはるかに論理的で読みやすい改ページが得られます。
他のヒント
文字数を気にするだけでなく、ページ内に高さを占める可能性のある画像やその他の種類の埋め込みオブジェクトがある場合、画像の高さも気にする必要があります。文字数は、段落構造のアイデアも提供しません(多くの段落を含むページよりも多くの文字を含む単一の長い段落は短くなる場合があります)。
JavaScriptを使用する意思がある場合は、それが理想的なソリューションである可能性があります。記事全体をクライアントに投稿し、JavaScriptにページネーションを処理させます。クライアントから、画像とオブジェクトの高さを検出できます。 PHPを使用して、ページのあるべき場所に関するマーカーを配置し、JavaScriptを使用してそれを実現できます。ページが非常に長い場合を除き、いくつかのxmlHttpRequests(AJAX)を実行する必要はないと思います。
単純なPHPソリューションの場合も単純ですが、行カウントの管理の問題を扱っていないため、おそらく理想的ではありません。 GET変数を使用して、ページのどこにいるかを判断できます。
これはあなたが探している正確な答えではないかもしれませんが、サイトの高さが固定されていないことを本当に確認する必要があります。柔軟な幅は本当に素晴らしいですが、高さほど重要ではありません。
特にこのような原因とコンテンツが多いサイトの場合。柔軟な高さが必要です。
apphackerが述べたように、PHP内から高さを実際に検出することはできず、JavaScriptで立ち往生しています。ページングにこだわる場合は、コンテンツ作成者にページの区切りタイミングを決定させる方がよいでしょう。そのため、単語の途中や文などではなく、実際のセクションで区切ります。
編集:使いやすさはデザインを決定するものであり、その逆ではありません。あなたは間違っています;)
良いページネーションは簡単なタスクではありません。それはコーディングの単純な問題ではありません。 Plass(1981)による科学的研究は、最適な改ページが一般にNP困難であることを証明しました。 浮動小数点、改行、さまざまなフォントスタイルなどについて心配する必要があります。
また、HTMLエンジンがあなたを助けることができるのは、ページをDOMツリーに解析することだけです。サイズはどうですか?はい、フォント幅とフォント高さ、マージンとパディング、画像サイズを設定できます。しかし、それだけです。すべてのレイアウトはあなたの肩の上にあります。そして、javascriptで実行しています... meh ...
したがって、自動固定高さのページネーションの唯一の実行可能なソリューションは、サーバー側になります。 PrinceXMLは現在、最高のHTML2PDFコンバーターです。ただし、費用がかかります。
さまざまなページの高さに慣れている場合は、epallaの提案を使用できます。しかし、これも見かけほど簡単ではありません。
ページネーションの参照:
- 最適ページネーション技術、Plass、1981
- オン1998年 複雑なドキュメントのページネーション
- 改ページの再検討
- Knuthのデジタルタイポグラフィ