タグ: php を抽出しています。
Total: 96

preg_match のサイズ

ブログ | 2010/10/7 15:59
どうも抽出したい部分が大きいと、スルーされるようだ。

preg系関数 100Kを越える大きさの文字列を処理できない
http://blogs.yahoo.co.jp/wwzzwwzz1012/527035.htm...

php.iniで下記あたりを修正すればよいみたい。おそらく下記がデフォルト値
[Pcre]
pcre.backtrack_limit=100000
pcre.recursion_limit=100000

住所文字列の分解

ブログ | 2010/8/6 01:27
区切りのない住所文字列から、
都道府県と市区町村とその他に分けます。

<?php

$str = '石川県石川郡野々市町住吉町';
//$str = '長崎県北松浦郡鹿町町鹿町免';
//$str = '三重県四日市市高砂町';
//$str = '広島県廿日市市須賀';
//$str = '岩手県花巻市東和町落合1区';
//$str = '新潟県上越市中郷区江口';
//$str = '北海道旭川市四区三条四丁目';

preg_match('/^(北海道|青森県|岩手県|秋田県|山形県|宮城県|福島県|新潟県|栃木県|群馬県|茨城県|埼玉県|千葉県|東京都|神奈川県|山梨県|静岡県|長野県|富山県|石川県|福井県|岐阜県|愛知県|三重県|奈良県|和歌山県|滋賀県|京都府|大阪府|兵庫県|岡山県|広島県|鳥取県|島根県|山口県|香川県|徳島県|愛媛県|高知県|福岡県|佐賀県|長崎県|熊本県|大分県|宮崎県|鹿児島県|沖縄県)(北松浦郡鹿町町|.+?郡.+?町|.+?郡.+?村|宇陀市|奥州市|上越市|黒部市|豊川市|姫路市|.+?[^0-9一二三四五六七八九十]区|四日市市|廿日市市|.+?市|.+?町|.+?村)(.*)$/u',$str,$match);

$pref = !empty($match[1]) ? $match[1] : '';
$city = !empty($match[2]) ? $match[2] : '';
$town = !empty($match[3]) ? $match[3] : '';

?>

Yahoo!のAPIが区切りを入れてくれると嬉しいのだけれど...
▼追記 2010/8/28 05:47
townに区が入ると切れなかったので、少し修正。
まだ網羅はできてない気はします。
▼追記 2010/8/28 16:15
都道府県も省略して、これでいけるかな。
preg_match('/^(.+?[都道府県])(北松浦郡鹿町町|.+?郡.+?町|.+?郡.+?村|宇陀市|奥州市|上越市|黒部市|豊川市|姫路市|.+?[^0-9一二三四五六七八九十]区|四日市市|廿日市市|.+?市|.+?町|.+?村)(.*)$/u',$str,$match);

都・道・府・県の文字列の入る都道府県はないですよね?
▼追記 2010/8/28 16:23
もう少し短くできるか
preg_match('/^(.+?[都道府県])(北松浦郡鹿町町|.+?郡.+?[町村]|宇陀市|奥州市|上越市|黒部市|豊川市|姫路市|.+?[^0-9一二三四五六七八九十]区|四日市市|廿日市市|.+?[市町村])(.*)$/u',$str,$match);
▼追記 2010/8/29 18:23
京都府が失敗してたので追加。
preg_match('/^(京都府|.+?[都道府県])(北松浦郡鹿町町|.+?郡.+?[町村]|宇陀市|奥州市|上越市|黒部市|豊川市|姫路市|.+?[^0-9一二三四五六七八九十]区|四日市市|廿日市市|.+?[市町村])(.*)$/u',$str,$match);
▼追記 2010/8/31 12:21
一文字区がまずかったので、更に修正。
preg_match('/^(京都府|.+?[都道府県])(北松浦郡鹿町町|.+?郡.+?[町村]|宇陀市|奥州市|上越市|黒部市|豊川市|姫路市|.*?[^0-9一二三四五六七八九十]区|四日市市|廿日市市|.+?[市町村])(.*)$/u',$str,$match);
▼追記 2010/8/31 21:19
省略で失敗(「羽村市」にて)したので、少し長く戻しました。
preg_match('/^(京都府|.+?[都道府県])(北松浦郡鹿町町|.+?郡.+?町|.+?郡.+?村|宇陀市|奥州市|上越市|黒部市|豊川市|姫路市|.*?[^0-9一二三四五六七八九十]区|四日市市|廿日市市|.+?市|.+?町|.+?村)(.*)$/u',$str,$match);
▼追記 2010/9/1 00:42
フィードバックから、大和郡山市,杵島郡大町町,周南市 を追加。
preg_match('/^(京都府|.+?[都道府県])(大和郡山市|北松浦郡鹿町町|杵島郡大町町|.+?郡.+?町|.+?郡.+?村|宇陀市|奥州市|上越市|黒部市|豊川市|姫路市|周南市|.*?[^0-9一二三四五六七八九十]区|四日市市|廿日市市|.+?市|.+?町|.+?村)(.*)$/u',$str,$match);
▼追記 2010/9/1 01:28
フィードバックから、「区」コレクション
http://uub.jp/nam/ku.html

これで、イイ線いったんじゃなかろうか。
preg_match('/^(京都府|.+?[都道府県])(大和郡山市|北松浦郡鹿町町|杵島郡大町町|.+?郡.+?町|.+?郡.+?村|石狩市|伊達市|八戸市|盛岡市|奥州市|南相馬市|上越市|姫路市|宇陀市|黒部市|小諸市|富山市|岩国市|周南市|佐伯市|.*?[^0-9一二三四五六七八九十]区|四日市市|廿日市市|.+?市|.+?町|.+?村)(.*)$/u',$str,$match);
▼追記 2010/9/1 11:44
masaさん情報から、西海市を追加かな。
北松浦郡鹿町町は、佐世保市に合併とのことなので、いずれ消去。
▼追記 2010/9/1 22:54
これでどうじゃ!
preg_match('/^(京都府|.+?[都道府県])(大和郡山市|蒲郡市|小郡市|杵島郡大町町|.+?郡.+?町|.+?郡.+?村|石狩市|伊達市|八戸市|盛岡市|奥州市|南相馬市|上越市|姫路市|宇陀市|黒部市|小諸市|富山市|岩国市|周南市|佐伯市|西海市|.*?[^0-9一二三四五六七八九十上下]区|四日市市|廿日市市|.+?市|.+?町|.+?村)(.*)$/u',$str,$match);

穴を見つけた方には、2pt差し上げます。
▼追記 2010/9/1 23:11
こうしようかと思うのですが、ご意見募集中。
preg_match('/^(京都府|.+?[都道府県])(大和郡山市|蒲郡市|小郡市|杵島郡大町町|.+?郡.+?町|.+?郡.+?村|(大阪市|名古屋市|京都市|横浜市|神戸市|北九州市|札幌市|川崎市|福岡市|広島市|仙台市|千葉市|さいたま市).+?区|(千代田|中央|港|新宿|文京|台東|墨田|江東|品川|目黒|大田|世田谷|渋谷|中野|杉並|豊島|北|荒川|板橋|練馬|足立|葛飾|江戸川)区|四日市市|廿日市市|.+?市|.+?町|.+?村)(.*)$/u',$str,$match);

$pref = !empty($match[1]) ? $match[1] : '';
$city = !empty($match[2]) ? $match[2] : '';
$town = !empty($match[5]) ? $match[5] : '';
▼追記 2011/1/21 15:38
これのフィードバックやらねばだな。
今夜やろう。
▼追記 2011/2/8 23:24
現在のかたち(なぜか、ここからはjavascriptで)
var m = addr.match(/^(京都府|.+?[都道府県])(大和郡山市|蒲郡市|小郡市|杵島郡大町町|山口市|鹿児島市|鈴鹿市|.+?郡.+?町|.+?郡.+?村|石狩市|伊達市|八戸市|盛岡市|奥州市|南相馬市|上越市|姫路市|宇陀市|黒部市|小諸市|富山市|岩国市|周南市|佐伯市|西海市|.*?[^0-9一二三四五六七八九十上下]区|四日市市|廿日市市|.+?市|.+?町|.+?村)(.*?)([0-9-]*?)$/);
var a = {};
a.pref = m[1] || '';
a.city = m[2] || '';
a.town = m[3] || '';
a.numb = m[4] || '';
▼追記 2011/2/9 00:11
懲りずに。
var m = addr.match(/^(京都府|.+?[都道府県])(大和郡山市|蒲郡市|小郡市|杵島郡大町町|(?:[^市]*?|余市|高市)郡.+?[町村]|(?:石狩|伊達|八戸|盛岡|奥州|南相馬|上越|姫路|宇陀|黒部|小諸|富山|岩国|周南|佐伯|西海)市|.*?[^0-9一二三四五六七八九十上下]区|四日市市|廿日市市|.+?市|.+?町|.+?村)(.*?)([0-9-]*?)$/);
▼追記 2012/5/8 00:48
フィードバックいただいたので、追加。
var m = addr.match(/^(京都府|.+?[都道府県])(大和郡山市|蒲郡市|小郡市|郡上市|杵島郡大町町|佐波郡玉村町|(?:[^市]*?|余市|高市)郡.+?[町村]|(?:石狩|伊達|八戸|盛岡|奥州|南相馬|上越|姫路|宇陀|黒部|小諸|富山|岩国|周南|佐伯|西海)市|.*?[^0-9一二三四五六七八九十上下]区|四日市市|廿日市市|.+?市|.+?町|.+?村)(.*?)([0-9-]*?)$/);

PHP、検索文字列のみハイライト(タグ内を除外)

ブログ | 2010/7/29 21:54
$strの文章の中、$wをem挟みます。HTMLタグ内は除外。
function f_src($str,$w){
 if(!empty($w)){
   $w = preg_quote($w);
   $w = strtr($w,array('/'=>'/'));
   $str = preg_replace_callback('/(<[^>]*'.$w.'[^<]*?>)|('.$w.')/iu',
     create_function(
       '$match',
       'if($match[1]){
         return $match[1];
       }elseif($match[2]){
         return "<em>".$match[2]."</em>";
       }'
     ),
     $str);
 }
 return $str;
}

PHP 配列のキーを初期化

ブログ | 2010/7/15 14:56
$arr = array_values($arr);
こうかな。

$arr['tako'] = 'パウル';
$arr = array_values($arr);
print_r($arr);

Array
(
   [0] => パウル
)

以前に書いたような気もするけれど。
タグ

memory_limit=384M

ブログ | 2010/5/25 02:38
どうも、ファイルのアップロードに失敗するのは、php.iniのmemory_limit設定のようだ。

memory_limit=128M
くらいだと、1MBを超える写真でしばしば失敗する。

memory_limit=384M
にすると、3MBくらいなら問題ないみたい。

.htaccessで設定するなら、
php_value memory_limit 384M

・・・
ということで、php.ini変更して、graceful。

Content-Lengthの出力

ブログ | 2010/5/5 14:33
どうもPHPページのheaderに、Content-Lengthがない。
mod_proxy_balancerの502エラーを調べていて、それが原因じゃないかと思ったりしたのだけれど、実際は関係なかった。
いろいろ検索していると、Content-Lengthはあった方がよさそうなので、出す方向で。

ob_start();

echo 'ここにHTMLタグ';
require_once('ファイル読み込んだり');

$ob_length = ob_get_length();
$ob_contents = ob_get_clean();
header('Content-Length: '.$ob_length);
echo $ob_contents;

imagick

ブログ | 2010/5/4 02:40
PHPでの画像処理はGDに頼っていたけれども、画質を落としたくないというリクエストがたまにあるので、検索してみると、imageMagickを使えば画質が落ちないらしいということを知る。

PHPでimageMagickを使うには、imagickなるmoduleを入れる。

Macportsでインストール(imageMagickも勝手に入る)
sudo port install php5-imagick

いろいろやってみたところ、GDでは、jpgで画質を100にしても、やや劣化するけれど、imageMagickならば、劣化しないようだ。
ただ容量も落ちないので、使いどころは悩ましいところ。

PHP sessionが切れる

ブログ | 2010/4/27 12:17
php.ini
session.cookie_lifetime = 0
だとブラウザが閉じるまでは生きる筈なのだけれど、切れる。
session.gc_maxlifetime = 1440
を見直し。

PHPなら、
ini_set('session.gc_maxlifetime', 10800);

.htaccessなら、
php_value session.gc_maxlifetime 10800

でも、sessionの保存場所が同じだと多分、他から削除されるので、
php_value session.save_path /***/***/***/tmp

こういうのも入れておく。
| 1 | 2 | 3 | 4 | 5 | 6 | ..... | 11 | 12 |

Rottel内コンテンツ

ユーザー一覧

Rottelとは?
利用規約
開発飲料
利用者の声
ヘルプ
close