Perlで文字列結合しながらs///演算子で置換する方法

April 27,2015 1:23 AM
Category:[Perl]
Tag:[Perl]
Permalink

Perlで文字列結合しながらs///演算子で置換する方法を紹介します。

お遊びレベルの内容ですのであしからず。

1.はじめに

次のように文字列の結合を行うサンプルがあります。

#!/usr/bin/perl
use strict;
 
my $a = 'a-1';
my $b = 'b-1';
my $c = 'c-1';
my $x .= $a . $b . $c;
print $x;

実行結果

a-1b-1c-1

が、「a-1」「b-1」「c-1」の「-」を「_」に変更して出力する必要が生じました。

ただし、値を代入するときに変更できない条件とします。また、結合したあとの$xを変換することもできない条件とします。

この条件の場合、赤字のs///演算子を追加して、

#!/usr/bin/perl
use strict;
 
my $a = 'a-1';
my $b = 'b-1';
my $c = 'c-1';
$a =~ s/-/_/;
$b =~ s/-/_/;
$c =~ s/-/_/;
my $x = $a . $b . $c;
print $x;

という風にする解が考えられますが、文字列結合のときにまとめて変換できないものでしょうか。

2.文字列結合しながらs///演算子で置換する

文字列結合のときにまとめて変換するには、次のように記述することで実現できます。

#!/usr/bin/perl
use strict;
 
my $a = 'a-1';
my $b = 'b-1';
my $c = 'c-1';
(my $x = $a . $b . $c) =~ s/-/_/g;
print $x;

実行結果

a_1b_1c_1
Comments [0] | Trackbacks [0]

WordPressのパンくずリストをMicrodataに対応させる方法

April 24,2015 1:55 AM
Category:[パンくずリスト]
Tag:[WordPress]
Permalink

WordPressのパンくずリストをMicrodataに対応させるカスタマイズを紹介します。

完成イメージ

1.Microdataとは

Microdataとは、HTML文書の中にメタデータを埋め込むためのHTML5の仕様です。

概要は下記の記事をご覧ください。

で、以前、WordPress用のパンくずリストを作るカスタマイズを紹介しました。

この記事のフォーマットを元にカスタマイズ方法を紹介します。

記事中でテンプレートタグの説明は割愛していますので上記のページをご覧ください。

2.function.phpに関数追加

下記のget_category_parents_with_microdata()という関数を丸ごとコピーしてfunction.phpに追加します。

function get_category_parents_with_microdata( $id, $link = false, $separator = '/', $nicename = false, $visited = array() ) {
    $chain = '';
    $parent = get_term( $id, 'category' );
    if ( is_wp_error( $parent ) )
        return $parent;
    if ( $nicename )
        $name = $parent->slug;
    else
        $name = $parent->name;
    if ( $parent->parent && ( $parent->parent != $parent->term_id ) && !in_array( $parent->parent, $visited ) ) {
        $visited[] = $parent->parent;
        $chain .= get_category_parents_with_microdata( $parent->parent, $link, $separator, $nicename, $visited );
    }
    if ( $link )
        $chain .= '<span itemscope itemtype="http://data-vocabulary.org/Breadcrumb"><a itemprop="url" href="' . esc_url( get_category_link( $parent->term_id ) ) . '" title="' . esc_attr( sprintf( __( "View all posts in %s" ), $parent->name ) ) . '"><span itemprop="title">'.$name.'</span></a></span>' . $separator;
    else
        $chain .= $name.$separator;
    return $chain;
}

この関数はget_category_parents()にMicrodata情報を加えたものです。

3.カテゴリアーカイブページにパンくずリストを表示

カテゴリアーカイブページにパンくずリストを表示するにはカテゴリページ用のテンプレートに下記を追加します。

<div class="crumbs">
<span itemscope itemtype="http://data-vocabulary.org/Breadcrumb"><a itemprop="url" href="<?php echo get_option( 'home' ); ?>/"><span itemprop="title">Home</span></a> &gt; </span>
<?php
$cat = get_query_var('cat');
$breadcrumbs = get_category_parents_with_microdata( $cat[0], true, ' &gt; </span>' );
echo preg_replace( '/(.*) &gt;/', '$1', $breadcrumbs );
?>
</div>

元のテンプレートのget_category_parents()をget_category_parents_with_microdata()を置き換えています。

完成イメージ
完成イメージ

第3パラメータがパンくずリストのセパレータになるので、マークを変更したい場合は「&gt;」の部分を適宜変更してください。

変更した場合、span終了タグは必ず付与することと、preg_replaceも変更した内容にあわせてください。

カテゴリページなどの判定は省略していますので、必要に応じて適宜追加してください。

4.記事ページにパンくずリストを表示

カテゴリアーカイブページにパンくずリストを表示するにはカテゴリページ用のテンプレートに下記を追加します。

<div class="crumbs">
<span itemscope itemtype="http://data-vocabulary.org/Breadcrumb"><a itemprop="url" href="<?php echo get_option( 'home' ); ?>/"><span itemprop="title">Home</span></a> &gt; </span>
<?php
$cat = get_the_category();
$breadcrumbs = get_category_parents_with_microdata( $cat[0], true, ' &gt; </span>' );
echo preg_replace( '/(.*) &gt;/', '$1', $breadcrumbs );
?>
</div>

完成イメージ
完成イメージ

記事タイトルも表示したい場合は次のようにするとよいでしょう。

<div class="crumbs">
<span itemscope itemtype="http://data-vocabulary.org/Breadcrumb"><a itemprop="url" href="<?php echo get_option( 'home' ); ?>/"><span itemprop="title">Home</span></a> &gt; </span>
<?php
$cat = get_the_category();
echo get_category_parents_with_microdata( $cat[0], true, ' &gt; </span>' );
?>
<?php the_title(); ?>
</div>

完成イメージ
完成イメージ

セパレータの変更方法は3項と同じです。

5.HTMLマークアップ

4項のサンプルで出力したHTMLマークアップも掲載しておきます。

<div class="crumbs">
  <span itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb">
    <a itemprop="url" href="http://user-domain/">
      <span itemprop="title">Home</span>
    </a>
    &gt;
  </span>
  <span itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb">
    <a itemprop="url" href="http://user-domain/?cat=1" title="お知らせ の投稿をすべて表示">
      <span itemprop="title">お知らせ</span>
    </a>
    &gt;
  </span>
  <span itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb">
    <a itemprop="url" href="http://user-domain/?cat=2" title="イベント の投稿をすべて表示">
      <span itemprop="title">イベント</span>
    </a>
    &gt;
   </span>
  モバイルサイトオープン
</div>

固定ページ用もでき次第更新します。

Comments [0] | Trackbacks [0]

Excelでセルの数式をまとめて表示する方法

April 23,2015 12:03 AM
Category:[Excel]
Tag:[Excel]
Permalink

Excelでセルの数式をまとめて表示する方法を紹介します。

1.問題点

Excelに次のような値が設定されています。

Excel

B11/C11/D11セルには、それぞれの上のセルにある数字を合計する数式が設定されています。

Excel

B11/C11/D11セルの数式を確認したい場合、数式が設定されているいずれかのセルを選択すれば、数式バーに数式が表示されます。

数式が設定されているセルを選択すれば、数式バーに数式が表示

が、これらの数式をまとめて確認したいのですが、まとめて表示させる方法が分かりません。

ということで以下に2つの方法を紹介します。

2.セルの数式をメニューからまとめて表示する

セルの数式をまとめて表示するには、メニューの「数式」を選択。

数式

「ワークシート分析」の「数式を表示」をクリック。

数式を表示

これでセルの数式がすべて表示されます。

セルの数式がすべて表示

セルの横幅が広がっていますが、これは数式表示で自動的に調整されるものです。

「数式の表示」をもう一度クリックすれば元の表示に戻り、セルの幅も元に戻ります。

3.セルの数式をショートカットキーでまとめて表示する

ショートカットキー、

Shift+Ctrl+@

を使えば、値の数式の表示切り替えを簡単に行なうことができます。

4.数式の編集

数式をセルに表示させた場合、選択したセルで数式を直接編集することができます。

セルの数式がすべて表示

Comments [0] | Trackbacks [0]
 1  |  2  |  3  |  4  |  5  | All pages