「WEB」カテゴリーアーカイブ

(PHP) 文字列から改行を削除(または置き換え)するときの方法と比較


文字列から改行を削除します。

ご存じの通り、改行コードはUnix系がLF(\n)のみ、DOS系(Windows系)がCR+LF(\r\n)、Mac系がCR(\r)のみとなっています。

PHPでこれらを置換しよう思った場合、改行コードがいずれか一つであることが明確なら良いのですが、なかなかそうはいきません。

置換に使う関数はいくつかありますが、str_replaceとmb_ereg_replaceを比較しました。str_replaceは文字列の単純な置換を、mb_ereg_replaceはマルチバイト対応、正規表現で一致する文字列の置換を行います。

改行の消去と置換では微妙にコードに違いが出ますが、今回は半角スペースに置換しました。

比較したコードは以下の通りです。

//元の文字列:$original

//#1 mb_ereg_replace 一つずつ置換
$str1 = mb_ereg_replace("\r\n","\n",$original); //CR+LFをLFに
$str1 = mb_ereg_replace("\r","\n",$str1); // CRをLFに
$str1 = mb_ereg_replace("\n"," ",$str1);//LFを半角スペースに

//#2 mb_ereg_replace 3通りを置換
$str2 = mb_ereg_replace("\r\n|\n|\r"," ",$original);

//#3 str_replace 一つずつ置換
$str3 = str_replace("\r\n","\n",$original); //CR+LFをLFに
$str3 = str_replace("\r","\n",$str3); // CRをLFに
$str3 = str_replace("\n"," ",$str3);//LFを半角スペースに

//#4 str_replace 3通りを置換
$str4 = str_replace(array("\r\n","\n","\r")," ",$original);

同じ文章(約40KB)を1000回ほど置き換え、時間を計測しました。文字列の置換結果はいずれも同じですが、かかった時間はかなり違いました。
#1 : 0.92秒
#2 : 0.30秒
#3 : 0.11秒
#4 : 0.09秒

やはりstr_replaceは高速です。正規表現は汎用性も高く便利な機能ですが、時間はどうしてもかかってしまいます。mb_str_replaceのような関数が標準であると便利だと思います。


MXレコードがらみのDNSの設定でCNAMEは使わない


Webサーバーとメールサーバーを別のIPアドレスに振り分けたく以下のようなDNSの設定をしました。メールはmail.example.com(IP:xxx.xxx.xxx.001)で処理し、wwwありexample.comとwwwなし.example.comを(IP:xxx.xxx.xxx.002)で処理するという例です。

cname @ www
a www xxx.xxx.xxx.002
mx mail 10

a mail xxx.xxx.xxx.001

しかし、これではメールは受け取りができません。以下のようにする必要があります。 続きを読む MXレコードがらみのDNSの設定でCNAMEは使わない


JoomlaはPHPをevalでなく直接実行できる


CMSのJoomla!を使う機会があったので紹介です。

WordPressなどでは、、投稿や記事の中でPHPを実行するプラグインや拡張機能では通常evalコマンドでPHPが実行されます。 続きを読む JoomlaはPHPをevalでなく直接実行できる


(PHP) TCPDFで外部フォントの指定(addTTFfontの修正)


PHPでPDFを動的に生成するライブラリ「TCPDF」のメモです。

標準で用意されているフォント以外を使う方法はWebで検索すると多数紹介されていますが、TCPDFの最新版(今回は6.2.3)でエラーが出てしまったので修正点を紹介します。 続きを読む (PHP) TCPDFで外部フォントの指定(addTTFfontの修正)

(PHP)mb_strwidthとmb_strimwidth


PHPで全角半角混じった文字のバイト数(≒幅)の処理のための関数のメモです。

shift-jisなら全角は2バイトと決め打ちしても良さそうですが、主流のUTF-8では全角は3バイト(一部2バイト)で、見た目とバイト数は一致しません。 続きを読む (PHP)mb_strwidthとmb_strimwidth

WordPress 標準テーマ Twenty Fourteen の色を変更する


WordPressである標準テーマ「Twenty Fourteen」はレスポンシブル対応で使いやすいテーマです。そのまま使ってもよいのですが、ワンポイントの色を変更するために子テーマを作りました。

緑系の2色を赤系の2色に変更しています。文字で使っているはっきりした赤の#C2002Aと薄いピンク系の#C45A72をそれぞれ青と水色などとしても使えると思います。

子テーマは、テーマで使用されているファイルを置き換えたり追加したりするもので、親テーマが更新されても上書きされません。

使い方は以下のコードをwordpressディレクトリ内のwp-contents/themes/にtwentyfourteen_childというディレクトリを作成し、style.cssとして保存するだけです。

子テーマのスタイルシートは親テーマの後に読み込まれ、子テーマに記述のある項目のみを再設定することで、部分的な色の変更を実現しています。 続きを読む WordPress 標準テーマ Twenty Fourteen の色を変更する

PHP ImageJPEGのメモ


PHPでImageJPEGを使ってJpegを生成するために使っていましたが、以前使っていたコードを流用したところ、失敗したのでメモです。 続きを読む PHP ImageJPEGのメモ

FuelPHPでindex.phpを省略する


FuelPHPでindex.phpを省略する時のメモ。ディレクトリ”fuel”に標準通りインストールしました。使用バージョンは1.7.1です。行数はバージョンによって適当に読み替えて下さい。 続きを読む FuelPHPでindex.phpを省略する

Coreserverがアップグレード、仕様変更でPHPのセーフモードがOFFに


Coreserverから届いたメールによると、2014/6/3のメンテナンスで、PHPのバージョンアップとともに今までセーフモードの設定がOFFになるとのことです。

WordPressなどの利用でCGI版を使ったり、.htaccessに追加で記述が必要だった点が改善されると思われます。(以前はこのように対処していました)

Coresererはデータベース数やマルチドメインなど、制約が少ないレンタルサーバーという印象があります。ドメイン取得にValue-Domainを使った流れでCoreserverを選択するケースもあると思います。

この改善で、Wordpressをとりあえず置くといった使い方をするのに向いた仕様になります。一番安いCore-Miniであれば、月額198円(税抜き、1年払い)で運用できます。

ドメイン(URL)変更を伴うWordPressの引っ越し


ドメイン変更を伴うWordpressの引っ越しを行ったのでメモです。ドメインの変更を伴う場合はファイルを丸ごとコピーしても残念ながらうまくいきません。今回はWordpress 3.6を用いたサイトの引っ越しをしました。また、データベースの修正にはWordPress Serialized PHP Search Replace Tool を使いました。

続きを読む ドメイン(URL)変更を伴うWordPressの引っ越し