ニュース 2015-07-01
制作実績に、長岡電業株式会社 様ホームページを追加しました。
ホームページ作成・デザイン制作・パソコンサポートのプロフェッショナル|長岡・柏崎から新潟県内対応いたします。
// rss取得 // クラス include_once(ABSPATH.WPINC.'class-simplepie.php'); $rss = new SimplePie(); // feed url $rss->set_feed_url(array('あんなところ','こんなところ','のfeed url')); $rss->init(); $maxitems = $rss->get_item_quantity(3); // アイテム取得 $items = $rss->get_items(0,$maxitems); // 出力ループ foreach ($items as $item) : $title = $item->get_title(); // 数値参照文字っぽいものを含む場合だけ処理 // そうしないとまっとうなUTF-8タイトルまで破壊される if(preg_match('/&#x.{4};/',$title)){ // get_title()メソッドで&が全て&に変換されてしまってたのでもとに戻す $title = preg_replace('/&/','&',$title); $title = mb_convert_encoding($title,'UTF-8','HTML-ENTITIES'); } // こっから出力関係適当に ・・・・・ endforeach;16進文字列取ってpackしてみたり、別のエンコード経由で変換してみたりと無駄なことをしていたことが判明。 ただし、エンティティと日本語の混合文字列だとどうなるか判らない模様。
<?php // 適当にパスを突っ込む $real = 'http://hoge.jp/install_dir/wp-admin/wp-content/../../../css/test/../test.css?aaa=bbb&amp;amp;ccc=ddd#flag'; var_dump(opt_path($real)); // パスを正規化(http(s)://から始まる絶対パスのみ) function opt_path($base=''){ // urlパース $parse = parse_url($base); // schemeに合わなければ何もしない if (!preg_match('/^https?\:\/\//',$base) ){ return $base; } // パスを/で区切る $tmp = split('\/',$parse['path']); // 配列を定義 $dirs = array(); foreach($tmp as $pt){ // 親ディレクトリの場合は前に積んだディレクトリをはずす if($pt == '..'){ array_pop($dirs); }else if($pt == '.'){ // カレントの場合は何もしない continue; }else{ // それ以外はディレクトリ名として突っ込む //(隠しディレクトリもいけると思うけど無対応) array_push($dirs,$pt); } } // url組み立て開始 $urls = $parse['scheme'] . '://' . $parse['host'] . implode('/',$dirs); // クエリがあれば付加 if($parse['query']){ $urls = $urls . '?' . $parse['query']; } // フラグメントがあれば付加 if($parse['fragment']){ $urls = $urls . '#' . $parse['fragment']; } return $urls; } ?>