wp list categoriesを利用して投稿数を多い順にカテゴリを出力すると
PHP
1 2<li class="cat-item cat-item-2"><a href="#">ca1</a> (2) 3</li> 4<li class="cat-item cat-item-3"><a href="#">ca2</a> (1) 5</li> 6
のように出力されます。
これから()を取り除こうと正規表現を使うべく検索してコードを作ろうとしましたがうまくいきませんでした。こちらを参考にしてpreg_replaceで以下のような正規表現を作りました。
#</a> ([1-9]*)</li>#
</a> $1</li>
教えていただけると幸いです。
現時点では正規表現に主眼を置いていきたいので以下のようなコードで試しています。
PHP
1 2<?php 3$str = <<<EOF 4<li class="cat-item cat-item-2"><a href="#">ca1</a> (2) 5</li> 6<li class="cat-item cat-item-3"><a href="#">ca2</a> (1) 7</li> 8EOF; 9$result = preg_replace('#</a> ([1-9]*)</li>#', '</a> $1</li>', $str); 10echo $result; 11
結果的な出力としては
PHP
1 2<li class="cat-item cat-item-2"><a href="#">ca1</a> 2 3</li> 4<li class="cat-item cat-item-3"><a href="#">ca2</a> 1 5</li> 6
を期待していますが、現状のコードでは()が削除されずに変数strのまま出力されてしまいます。
コードはなるべくコピペで動くものでご提示ください。
また、「うまくいかない」では何も伝わりませんので、起きている現象や問題を追記し「質問」にしてください。
WordPressについては明るくないですがその()は投稿数がでているのではないでしょうか?それでしたら表示しないような設定があるかもしれませんし、なくても、文字列の置換ではなくそもそも出ないように改修したほうが確実では?
正規表現で無理やり対応する事象ではないように見えます
追記依頼ありがとうございます。
WordPressでは既存のコードでは投稿数が表示されません。
それをwp list categories関数に特定の配列を持たせることによって投稿数を表示させることができます。
しかしながら、出力した投稿数には()が含まれてしまいます。
公式の日本語ドキュメントでは()を単に削除するコードが書かれていますがそうするともしカテゴリー名に()が含まれていた場合、削除されてしまいます。
以上の理由から正規表現を利用して()の削除をしたいと考えました。
コードに関しましては追記させていただきます。
回答2件
あなたの回答
tips
プレビュー