• mb_convert_kana 濁点の結合 かな、カタカナ混在

     $str = ‘ぐボピ.png’; $s […]

    
    
    
    $str = 'ぐボピ.png';
    $strs = mb_str_split($str);
    $strs = array_reverse($strs);
    $nextkey = -1;
    
    foreach ($strs as $key => $str) { //かな true
      if(preg_match("/^[ぁ-ん]+$/u",$str)){
        $kana = true;
      }else{
        $kana = false;
      } 
    
      if(preg_match("/゙|゚/",$str)){ //濁点なら保存
        $dakten = $str;
        $nextkey = ++$key;
        continue;
      }
      
      if($key == $nextkey){ //濁点なら次の文字の後ろに連結
        $str .= $dakten; 
      }
      
      $str = dakten_replace($str); //置換 濁点も一文字になってる
      
          
      if( $kana ) {  // 元が "かな" ならかなに戻す
        $str = mb_convert_kana($str, 'c', 'UTF-8');
      }
    
         $newstrs[] = $str ; 
    }
    
    $strs = array_reverse($newstrs);
    $str = implode('',$strs);
      var_dump($str);
    
      function dakten_replace ($str){
        $str = str_replace('゙','゛' ,$str); //全角濁点を半角に
        $str = str_replace('゚','゚' ,$str);
        $str = mb_convert_kana($str, 'hkV', 'UTF-8');
        $str = mb_convert_kana($str, 'HV', 'UTF-8');
        $str = mb_convert_kana($str, 'C', 'UTF-8');
        return $str;
      }
    
    
    

    string(13) “ぐボピ.png”
    $str = ‘ぐボピ.png’;
    比較しても見た目ではわからない。

    濁点はひらがなでもカタカナでもないが、かなとカタカナは等しい

  • samba.conf 設定ファイルをincludeしてユーザーを追加する

    $ cd ~ 新規ファイルの作成 $ vi aki […]

    
    
    $ cd ~
    
    新規ファイルの作成
    $ vi akita_hanako_smb.conf
    
    i で編集モードにして 以下をペースト
    
    	#この下の行から
    	[share]
    	  comment = Share Folder for All Users
    	  path = /home/akita_hanako/
    	  browseable = no
    	  read only = no
    	#この上の行まで
    
    ESCキー → :wq 
    
    
    共通ファイルの編集
    $ sudo vi /etc/samba/smb.conf
    	
    # この一行を最終行へ貼り付ける	
    	include = /home/akita_hanako/akita_hanako_smb.conf
    
    ESCキー → :wq 
    
    これでsambaユーザーを作る
    $ sudo pdbedit -a akita_hanako
    パスワードを打つ x2
    
    
    sanbaの再起動実行
    $ sudo systemctl restart smb.service
    
    
    
  • LINE Messaging APIで phpから Pushメッセージを送信する

    1. LINE for Bussinessを用意す […]

    1. LINE for Bussinessを用意する

    LINE Messaging APIを使用するには Line Developers に登録する必要があります。
    LINE Bussiness ID を作る

    次に LINE Bussiness アカウントとLINEアカウントを連携します。
    連携するURL

    2. LINE Messaging APIを設定する

    channelをつくる

    Webhookを設定

    Webhook settings の 「Edit」 をクリックし、公開しているWebhookURLを設定します。

    Channel access tokenを有効化

    Messaging APIの下部にある「Channel access token」の「Channel access token (long-lived) 」から「Issue」をクリック。

    つくったchannelをお友達登録する

    Messaging API 管理画面から作ったチャンネルのQRコードを表示してお友達登録する

    
    
        // LINE Messaging API プッシュメッセージを送る
        $LINE_PUSH_URL = "https://api.line.me/v2/bot/message/push";
    
    
        $LINE_CHANNEL_ACCESS_TOKEN = 'ZXCVFDSA*******************'; 
    
        // Your user ID
        // Messaging API 管理画面で確認 これくらいながいやつ
        $LINE_USER_ID = "U3**********************";
    
        // 送信するメッセージ
        $message_1 = "こんにちは API";
        $message_2 = "PHPからPUSH送信\r\n改行して2行目";
    
        // リクエストヘッダ
        $header = [
            'Authorization: Bearer ' . $LINE_CHANNEL_ACCESS_TOKEN,
            'Content-Type: application/json'
        ];
    
        // 送信するメッセージの下準備
        $post_values = array(
            [
            "type" => "text",
            "text" => $message_1
            ],
            [
            "type" => "text",
            "text" => $message_2
            ]
        );
    
        // 送信するデータ
        $post_data = [
            "to" => $LINE_USER_ID,
            "messages" => $post_values
            ];
    
        // デバグ確認用のログ:送信データ
        $file = '/tmp/post_data.txt';
        file_put_contents($file, json_encode($post_data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE), FILE_APPEND);
        file_put_contents($file, PHP_EOL.PHP_EOL, FILE_APPEND);
    
        // cURLを使った送信処理の時は true
        // file_get_contentsを使った送信処理の時は false
        $USE_CURL = true;
    
        if ($USE_CURL) {
            // cURLを使った送信処理
            $curl = curl_init();
            curl_setopt($curl, CURLOPT_URL, $LINE_PUSH_URL);
            curl_setopt($curl, CURLOPT_POST, true);
            curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
            curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($post_data));
            $result = curl_exec($curl);
            curl_close($curl);
        }
        else
        {
            // file_get_contentsを使った送信処理
            $context = stream_context_create(array(
                'http' => array(
                    'method' => 'POST',
                    'header' => implode("\r\n", $header),
                    'content'=>  json_encode($post_data),
                    'ignore_errors' => true
                )
            ));
    
            $result = file_get_contents(
                $LINE_PUSH_URL,
                false,
                $context
                );
        }
    
        // デバグ確認用のログ:受信レスポンス
        $file = '/tmp/result.txt';
        file_put_contents($file, $result, FILE_APPEND);
        file_put_contents($file, PHP_EOL.PHP_EOL, FILE_APPEND);
    
    
  • vi エディタ で一括置換 スラッシュを含む場合

    :%s;192.168.17.106/wordpr […]

    
    :%s;192.168.17.106/wordpress;abc.domain.jp;g
    

    192.168.17.106/wordpress → abc.domain.jp に変わる

  • jquery 要素を取得 いろいろ

    オブジェクト要素数のカウント [code] let […]

    オブジェクト要素数のカウント

    [code]
      let a = {de:234}
      console.log( Object.keys(a).length)
    
    // a.length はundefined になる
    [/code]
    

    変数が未定義かどうかの判定

    [code]
                                                     // あり   なし
        console.log(typeof session !== "undefined" );// true  false
        console.log(typeof session === "undefined" );// false true
     
    [/code]

    指定した要素本体の取得

    [code]
       $('#youso').prop('outerHTML');
     [/code]

    自分の親要素の順位

     
     var this_index = jQuery('.oya p').index(jQuery(this).parent());
     oyaクラスの中のpが何番目かが取得できる this は同じ親を持つボタンとか
     

    チェックされているラジオボタン、checkBoxの値を取得

     
    jQuery('input[name="shipper"]:checked').val();
     

    ラジオボタンの見た目をONにする、属性を選択状態にする←これらは別物

     
     jQuery('[type="radio"]').eq(0).prop('checked',true).attr('checked',true);
     

    選択されたラジオボタンがあればtrue

     
     var ret = $('[name="fls"]').is(':checked'); 
     

    セレクトメニューに値をセット

     
    jQuery(this).prop("selectedIndex", 0); //最初のoption指定
     

    セレクトメニューで選択されたoption要素のdata属性を取得

     
    jQuery('select').children('option:selected').data('id');
    

    datalistで選択されたoption要素のdata属性を取得

     
      $('[name="company"]').change(function(){
          var issuer_id = $("#datalistOptions22 option[value='" + $('#company').val() + "']").data('issuer_id');
          console.log(issuer_id);
        });
    
  • GoogleのOAUTHログイン

    Google App を作成する Google 認 […]

    Google App を作成する

    Google 認証機能には、Google Developers Console のクライアント id とシークレットのパスが必要になります。そのために Google アカウントで入り、新規プロジェクトを作成していきます。 Google Developers Console

     

     

    クライアントIDとクライアントシークレットを作成後、後々のためにコピーしておきます。承認済みのリダイレクト URIは、

    http://あなたのドメイン/login/google/callback
    

    を加えておきます。

    laravel の config/services.php にペーストします。

    
    return [
        ....
        'google' => [
            'client_id' => 'app id',
            'client_secret' => 'add secret',
            'redirect' => 'http://localhost/login/google/callback',
        ],
    ]
    
  • プラグインをデータベースから無効化

    これで探す select * from wp_op […]

    これで探す

    
    select * from wp_options where option_name = 'active_plugins'
     
     
    // シリアライズされた文字列↓
    $a='a:48:{i:0;s:25:"add-to-any/・・・・・・";}';
    
    $b= unserialize($a);
    
    array_splice($b,25,1);  //インデックスだと24を無効化
    array_splice($b,13,1);  //〃 12
    print_r($b);
    $b = serialize($b);
    var_dump($b); // 再度シリアライズして コピー
     
     
    update wp_options
                -- ここに貼る ↓
    set  option_value = 'i:0;s:23:"add-to-any/・・・・・・";}'
    where option_name = 'active_plugins'
     
  • WordPressのメディアライブラリで画像が表示されない gridのみ

    functions.phpもしくはプラグインファイ […]

    functions.phpもしくはプラグインファイルの先頭行に<?php 以外の何かがある場合

     
    ●<?php
    ↑これを消せばなおる