文字列から文字列を検索 preg_match_all関数
PHP関数 | 文字列操作Published 2011/02/20 at 3:48 PM文字列検索で使える関数が、preg_match_all
いろんなパターンで配列情報として取得して、文字列(HTML)の加工ができる
http://php.net/manual/ja/function.preg-match-all.php
ナビメニューで、テンプレートタグで一覧を取得して、PHP情報として出力したとき
wp_list_categories
wp_list_pages
WP前提のサイトの場合、あまりないかもしれないが
旧サイトで、前後メニューまでCSS変えてるので、活かしたいなんてときとか
<?php
preg_match_all("|<p[^>]+>(.*)</p>|U",
'<p><a href="">aaaaaaaaaaa</a></p>
<p><a href="">bbbbbb</a></p>
<p><a href="">cccc</a></p>
<p><a href="">ddddd</a></p>
<p><a href="">eeeee </a></p>'
,$out, PREG_PATTERN_ORDER);
print_r($out);
?>
変換<br>
<?php
for($wi=0;$wi<count($out[0]);$wi++){
echo $out[0][$wi].'<br>';
if( $wi!= count($out[0])-1){
if (strpos($out[0][$wi],'current') ){
$out[0][$wi+1] = str_replace('class="', 'class="nafter ', $out[0][$wi+1]);
}
}
}
print_r($out);
?>
上記の例は、cssでcurrent という文字列があった場合に次のメニューのCSSに、nafter を追加してます。
一番最後にcurrent があるときには、次がないの追加しない
前も変えるなんてときは、もうひとつ置き換え処理が入る
※上記例は、liタグでなpタグでかこまれている場合です。