大人の皆様、時代は変わりました!現在、Typechoは最も理想的な解決策となっています。というのも、Baiduは固定化された思考方式のコードしか検出できませんからです。
実際生成されたHTMLコードは、あまりにもシンプルで圧倒的です。
完全なカスタマイズが可能で、`li`要素や`a`要素にクラスを付与したり、「前ページ」「次ページ」要素にクラスを付与したり、Typechoが標準で提供する「more」用`li`タグを削除したりできます。さらに、内部のコンテンツに任意のテキストを追加することも可能です。
ページ分割コード
それでは、ソースコードを公開します:
<nav class="my-5">
<?php
ob_start();
$this->pageNav('«','»', 1, '', array('wrapTag' => 'ul', 'wrapClass' => 'pagination pagination-rounded mb-0 justify-content-center', 'itemTag' => 'li', 'textTag' => 'span', 'currentClass' => 'active', 'prevClass' => 'prev', 'nextClass' => 'next'));
$content = ob_get_contents();
ob_end_clean();
$content = preg_replace("/<li><span>(.*?)<\/span><\/li>/sm", '', $content);
$content = preg_replace("/<li [class=\"active\"]+>(.*?)<\/li>/sm", '<li class="page-item active">$1</li>', $content);
$content = preg_replace("/<li [class=\"prev\"]+>(.*?)<\/li>/sm", '<li class="page-item">$1</li>', $content);
$content = preg_replace("/<li [class=\"next\"]+>(.*?)<\/li>/sm", '<li class="page-item">$1</li>', $content);
$content = preg_replace("/<li>(.*?)<\/li>/sm", '<li class="page-item">$1</li>', $content);
$content = preg_replace("/<a href=\"(.*?)\">(.*?)<\/a>/sm", '<a class="page-link" href="$1">$2</a>', $content);
echo $content;
?>
</nav>主な方法は「正規表現による修正」です。一度の操作で永久的な変更が可能であり、生成されたコンテンツを直接変更します。これにより、JSで個別に照合・追加・調整する必要がなく、あなたの想像力を自由に発揮できます。
常用正規表現
以下に、正規表現におけるいくつかのワイルドカードを示します:
よく用いられる特殊文字
コード説明
。改行記号を除く任意の文字と一致する
w:文字、数字、または下線を指定します。
s:任意の空白文字をマッチングします。
d:一致する数字
b 単語の開始部または終了部と一致させる
^ 文字列の開始位置
$:文字列の末尾を指定
一般的な制限記号
コード/構文説明
- 0回以上繰り返す
- 1回または複数回繰り返す
? 0回または1回繰り返す
{n} を n 回繰り返す
{n} を n 回またはそれ以上繰り返す
{n, m} を n 回から m 回まで繰り返す
よく用いられる反義語
代码/语法 说明
W 匹配任意不是字母,数字,下划线,汉字的字符
S 匹配任意不是空白符的字符
D 匹配任意非数字的字符
B 匹配不是单词开头或结束的位置
[^x] 匹配除了x以外的任意字符
[^aeiou] 匹配除了aeiou这几个字母以外的任意字符
一般的なモード修飾子
代码/语法 说明
i 表示在进行匹配的时候不区分大小写
m 多行识别.即将字符串视为多行,不管是那行都能匹配
s 将字符串视为单行,转义回车换行符作为普通字符
g 表示全局匹配
x 将模式中的空白忽略
A 强制从目标字符串开头匹配
D 强制尾部无任何内容.若使用$限制结尾字符,则不允许结尾有换行
U 禁止贪婪匹配,只匹配最近的一个字符串(不重复匹配)
e 配合PHP函数preg_replace()使用,可以把匹配来的字符串当作正则表达式执行
ページ分割出力コードの解説
なぜこのような動作になるのかを理解するには、まず `$this->pageNav()` というコードが何を実行しているのかを把握する必要があります。このコードは多くのユーザーが自作の機能として使用しています。ここでは、私がよく使用している説明を記載します:
page翻页
wrapTag 外层包裹标签名, 默认ol
wrapClass 外层包裹类名
itemTag 内层标签名, 默认li
textTag 直接输出文字的标签名
currentClass 当前聚焦类名
prevClass 上一页类名
nextClass 下一页类名基本的に問題ありません。理解力さえ十分であれば、ソースコードからどのようにカスタマイズするかを簡単に発見できるはずです。