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

$a = []; //php5.4

ブログ | 2012/11/7 23:30
php5.4で、そう書けるようになってる。
jsの関数を移植していて、気がついたのだけれど。これは嬉しい。

php5.3系までは、$a = array();
タグ

array_chunk

ブログ | 2012/7/5 00:55
配列を指定した数ずつ分割してくれる。
そんなのないかなと思って検索したらすぐに出て来て、感激。

$arr = array_chunk($arr,1000);

phpで、scp

ブログ | 2012/4/2 00:10
sudo pecl install ssh2
としたら、エラーが出たので、
sudo port install libssh2
sudo pecl install ssh2  channel://pecl.php.net/ssh2-0.11.3

インストールの途中で、libssh2のprefixを聞かれるので、/opt/localを入力。
libssh2 prefix? [autodetect] : /opt/local

で、php.iniに
extension=ssh2.so
に追加かな。macportsなら
/opt/local/var/db/php5/ssh2.ini に。

で、phpで
http://www.php.net/manual/ja/ref.ssh2.php
を参考に
<?php

$methods = array(
 'kex' => 'diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1',
 'client_to_server' => array(
   'crypt' => '3des-cbc',
   'comp' => 'none'
 ),
 'hostkey'=>'ssh-rsa',
 'server_to_client' => array(
   'crypt' => 'aes256-cbc,aes192-cbc,aes128-cbc',
   'comp' => 'none'
 )
);

$conn = ssh2_connect('ip', port, $methods);
if(ssh2_auth_pubkey_file($conn, 'username',
                         '/path/to/.ssh/id_dsa.pub',
                         '/path/to/.ssh/id_dsa', 'secret')) {
 echo "Public Key Authentication Successful";
 ssh2_scp_send($conn, '/local/filename', '/remote/filename', 0644);
} else {
 die('Public Key Authentication Failed');
}

?>

ssh2_exec とか、ssh2_sftp_xxxxx
なんてのもあるから、いろいろできそう。
▼追記 2012/4/3 17:44
centOSの場合、

yum -y install libssh2 libssh2-devel
pecl install ssh2
pecl install ssh2 channel://pecl.php.net/ssh2-0.11.3
--------------------
libssh2 prefix? [/usr] : /usr/lib64
--------------------

emacs /etc/php.d/ssh2.ini
--------------------
extension=ssh2.so
--------------------
▼追記 2012/4/14 17:48
これ、webからだと、ssh2_auth_pubkey_file だとうまくなかったので、
ssh2_auth_password にしたんでした。
タグ
php | ssh | scp

検索インデックスで省く文字

ブログ | 2012/2/12 17:14
3文字までの、ngramのインデックスも大きくなると、なかなか大変。
なので、少しでも文字を少なくして容量を削減したい。で、記号系はできるだけスルーする。

ngramの文字列配列を返す関数。
function ngramIndex($str,$wlen=3){
 $len = mb_strlen($str);
 $n = array();
 for($i=0; $i < $len; $i++){
   for($a=1; $a <= $wlen; $a++){
     $moji = mb_substr($str,$i,$a);
     if(preg_match('/[\r\n !"#$%()*+,-.:;<=>?¥ 、。,.・:;?!゛゜´`¨^ ̄_ヽヾゝゞ〃仝々〆〇―‐/\~∥|…‥‘’“”()〔〕[]{}〈〉《》「」『』【】+-±×÷=≠<>≦≧∞∴♂♀°′″℃¥$¢£%#*@§☆★○●◎◇◆□■△▲▽▼※→←↑↓〓∈∋⊆⊇⊂⊃∪∩∧∨¬⇒⇔∀∃∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬ʼn♯♭♪†‡¶◯ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρστυφχψωАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡㍻〝〟№㏍℡㊤㊥㊦㊧㊨㈱㈲㈹㍾㍽㍼≒≡∫∮∑√⊥∠∟⊿∵∩∪]/u',$moji)) continue;
     if($a == 1 && preg_match('/[ぁ-ゞァ-ヾ!-~0-9ー&〒]/u',$moji)) continue;
     $n[] = $moji;
   }
 }
 $n = array_unique($n);
 return $n;
}

スルーしてない記号は、固有名詞に出てきそうな、「'」「&」「@」「/」「&」「ー」「〒」。
「。」はスルーする。「モーニング娘。」は無視する。

これでいいか。

pathinfo(), 日本語ファイル名が駄目らしい

ブログ | 2011/12/2 00:18
「pathinfo 日本語」で検索すると結構でてきた。Linux環境だと、うまく取得できないらしい。
さて、原因が分かったところで、どうしようかな、と。

$memcache->delete($key); でエラーが出る場合

ブログ | 2011/9/8 03:14
Notice: MemcachePool::delete(): Server localhost (tcp 11211, udp 0) failed with: CLIENT_ERROR bad command line format.

pecl-memcache と memcached のバージョンの組み合わせで出るらしい。

http://stackoverflow.com/questions/4745345/how-d...
http://www.php.net/manual/en/memcache.delete.php...

timeoutに0を入れて回避するらしい。
$memcache->delete($key,0);

GPSが使えない機種一覧

ブログ | 2011/8/19 13:12
<?php

function nogps(){
 $ua = !empty($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '';
 if(!$ua) return false;
 $a = array('*504i', '*505i', '*900i', '*902i', '001SC', '702MO', '702NK', '702NKⅡ', '702sMO', '703N', '705NK', '705P', '705SC', '706P', '706SC', '707SC', '707SCII', '708SC', '709SC', '731SC', '740SC', '802N', '802SE', '804N', '804NK', '804SS', '805SC', '820SC', '821SC', '830SC', '840SC', '920SC', '930SC', '931SC', 'A1304T', 'A1304T II', 'A1405PT', 'A1406PT', 'D209i', 'D2101V', 'D210i', 'D211i', 'D251i', 'D251iS', 'D252i', 'D253i', 'D253iWM', 'D502i', 'D503i', 'D503iS', 'D504i', 'D505i', 'D505iS', 'D506i', 'D701i', 'D701iWM', 'D702i', 'D702iBCL', 'D702iF', 'D703i', 'D704i', 'D705i', 'D705iμ', 'D800iDS', 'D851iWM', 'D900i', 'D901i', 'D901iS', 'D902i', 'D902iS', 'D903iTV', 'ER209i', 'F-02A', 'F-04A', 'F-04C', 'F-05C', 'F-07A', 'F-08A', 'F-08B', 'F-08C', 'F-10B', 'F2051', 'F209i', 'F2102V', 'F210i', 'F211i', 'F212i', 'F251i', 'F502i', 'F502it', 'F503i', 'F503iS', 'F504i', 'F504iS', 'F505i', 'F506i', 'F671i', 'F671iS', 'F672i', 'F700i', 'F700iS', 'F702iD', 'F703i', 'F704i', 'F705i', 'F706i', 'F880iES', 'F881iES', 'F882iES', 'F883i', 'F900i', 'F900iC', 'F900iT', 'F901iC', 'F901iS', 'F902i', 'F902iS', 'F903iX', 'KO209i', 'KO210i', 'L-01A', 'L-01C', 'L-02B', 'L-03A', 'L-03B', 'L-03C', 'L-04A', 'L-04B', 'L-06A', 'L600i', 'L601i', 'L602i', 'L704i', 'L705i', 'L705iX', 'L706ie', 'L852i', 'M702iG', 'M702iS', 'N-03A', 'N-03B', 'N-04A', 'N-05A', 'N-06B', 'N-07A', 'N-07B', 'N-08B', 'N2001', 'N2002', 'N2051', 'N209i', 'N2102V', 'N210i', 'N211i', 'N211iS', 'N251i', 'N251iS', 'N252i', 'N253i', 'N2701', 'N502i', 'N502it', 'N503i', 'N503iS', 'N504i', 'N504iS', 'N505i', 'N505iS', 'N506i', 'N506iS', 'N506iSII', 'N600i', 'N601i', 'N700i', 'N701i', 'N701iECO', 'N702iD', 'N702iS', 'N703iD', 'N703iμ', 'N704iμ', 'N705i', 'N705iμ', 'N706i', 'N706iII', 'N706ie', 'N821i', 'N900i', 'N900iG', 'N900iL', 'N900iS', 'N901iC', 'N901iS', 'N902i', 'N902iL', 'N902iS', 'N902iX', 'NM502i', 'NM705i', 'NM706i', 'NM850iG', 'P-01C', 'P-02C', 'P-03A', 'P-03B', 'P-04A', 'P-05A', 'P-05B', 'P-06A', 'P-07B', 'P-10A', 'P2002', 'P209i', 'P209iS', 'P2101V', 'P2102V', 'P210i', 'P211i', 'P211iS', 'P213i', 'P251iS', 'P252i', 'P252iS', 'P253i', 'P253iS', 'P502i', 'P503i', 'P503iS', 'P504i', 'P504iS', 'P505i', 'P505iS', 'P506iC', 'P651ps', 'P700i', 'P701iD', 'P702i', 'P702iD', 'P703i', 'P703iμ', 'P704i', 'P704iμ', 'P705i', 'P705iCL', 'P705iμ', 'P706ie', 'P706iμ', 'P821i', 'P851i', 'P900i', 'P900iV', 'P901i', 'P901iS', 'P901iTV', 'P902i', 'P902iS', 'P903iTV', 'P903iX', 'P905iTV', 'R209i', 'R211i', 'R691i', 'R692i', 'SH-05B', 'SH-06B', 'SH-09B', 'SH2101V', 'SH251i', 'SH251iS', 'SH252i', 'SH505i', 'SH505iS', 'SH506iC', 'SH700i', 'SH700iS', 'SH702iD', 'SH702iS', 'SH703i', 'SH704i', 'SH705i', 'SH705iII', 'SH706i', 'SH706ie', 'SH706iw', 'SH821i', 'SH851i', 'SH900i', 'SH901iC', 'SH901iS', 'SH902i', 'SH902iS', 'SH902iSL', 'SH903iTV', 'SH905iTV', 'SH906iTV', 'SO210i', 'SO211i', 'SO212i', 'SO213i', 'SO213iS', 'SO213iWR', 'SO502i', 'SO502iWM', 'SO503i', 'SO503iS', 'SO504i', 'SO505i', 'SO505iS', 'SO506i', 'SO506iC', 'SO506iS', 'SO702i', 'SO703i', 'SO704i', 'SO705i', 'SO706i', 'SO902i', 'SO902iWP+', 'SO903iTV', 'T2101V');

 $a = array_map(create_function('$v', 'return preg_quote($v,"/");'),$a);
 if(preg_match('/('.implode('|',$a).')/',$ua)) return true;
 return false;
}

?>

こんなんでどうだどう。
タグ

エクセルから書き出したcsvの読み込み

ブログ | 2011/8/10 13:46
phpには、fgetcsv() といった関数もあるけれど、"で囲われてたり囲われてなかったりするcsvだと、いまいちうまくいかない印象。

だいたいのcsvのやりとりは、エクセルからの書き出しになるから、SJISで改行や,を内包するときだけ、""で囲われる。(セル内の改行と行末の改行がどうもやっかいなのです。)

で、結局、こんな感じで行を配列に入れた。

<?php

$str = file_get_contents('xxxxx.csv');
$str = str_replace(array("\x0d\x0a", "\x0a", "\x0d"), PHP_EOL, $str);
$str = mb_convert_encoding($str,'UTF-8','SJIS');

//セル内の改行をひとまず[br]に置換
$str = preg_replace_callback('/(?:^|,)"((?:[^"]|"")*)"/s',
        create_function(
          '$matches',
          'return strtr($matches[0],array(PHP_EOL=>"[br]"));'
        ),
      $str);

//行末改行で区切って行を配列に
$lines = explode(PHP_EOL,$str);

//セル内の[br]を改行に戻す
$lines = array_map(create_function('$v', 'return strtr($v,array("[br]"=>PHP_EOL));'),$lines);

print_r($lines);


//セルの抜き出して処理
foreach($lines as $line){
 preg_match_all('/(?:^|,)(?:"((?:[^"]|"")*)"|([^,"]*))/s',$line,$matches);
 print_r($matches);
}

?>
タグ
前 | 1 | 2 | 3 | 4 | 5 | 6 | ..... | 11 | 12 |

Rottel内コンテンツ

ユーザー一覧

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