スキップしてメイン コンテンツに移動

投稿

5月, 2022の投稿を表示しています

PHP正規表現での処理いろいろ

4バイト文字チェック if ( preg_match( '/[\xF0-\xF7][\x80-\xBF][\x80-\xBF][\x80-\xBF]/', $value ) ) { return '4バイト文字が含まれています'; } UTF-8で日本語は基本3バイトだけれど、旧漢字?とかあまり日常使わない漢字は4バイトのものがあるよう。 wikipediaによると JIS X 0213 という規格の文字とか こちら の文字とか。 4バイト文字は、 1バイト目 = \xf0-\xf7 2バイト目 = \x80-\xbf 3バイト目 = \x80-\xbf 4バイト目 = \x80-\xbf の文字を指すので上記コードとなる。 参考: https://design215.com/toolbox/utf8-4byte-characters.php 画像ソースを取得 preg_match("/(.*)((http|https):\/\/.*?\.({$validSuffix}))(.*)/i", $elementValue, $aryMatch); $img = $aryMatch[2] HTML要素などの文字列の中から画像ソースを取得するときなどに使用した。 $validSuffixには許容する画像の拡張子を以下のようにパイプつなぎで設定する。 $validSuffix = 'png|jpeg|gif'; $elementValueは検索対象の文字列。 $aryMatchに検索結果が代入され、画像ソースは2番目のサブパターンなので$aryMatch[2]で取得できる。 変換指定\Q...\E $searched_items = preg_grep( '/.*\Q' . $search . '\E.*/', $items ); 上記のようなコードを見たときに\Q, \Eってなんだと思ったので調べると \Q は \E までのメタ文字を無効化するのだそう。 他にも \u は次の1文字を大文字に変換 \l は次の1文字を小文字に変換 \U は \E までの文字を大文字に変換 \L は \E までの...

Xdebug3をIntelliJで使う

以前メモっておいた手順でXdebugが動かないな、と思ったら Xdebug2からXdebug3になり設定ファイルのプロパティが変わっていたという話。  まずはXdebugをインストール インストールガイド に従ってダウンロードする。 自分はDocker環境だったのでDockerfileに以下を追記した。 >RUN pecl install xdebug \ && docker-php-ext-enable xdebug COPY ./php.ini /usr/local/etc/php/php.ini iniファイルの設定 Xdebug2からの移行については 公式 に説明があった。 以下が自分が設定したXdebug3での値。 [xdebug] xdebug.mode=debug xdebug.start_with_request=yes xdebug.client_host=host.docker.internal xdebug.client_port=9001 xdebug.log=/var/log/xdebug.log xdebug.idekey=PHPSTORM xdebug.client_host=host.docker.internalはDockerでの設定値。デフォルトはlocalhost。 xdebug.client_portで設定したポート番号を intellijの設定画面>Language&Frameworks>PHP>DebugのXdebugの項目に設定する。 xdebug.idekeyに設定した「PHPSTORM」をRun>Edit Configurationsの画面で追加したPHP Remote Debugの中の「IDE key」に設定する。 あとはDocker再起動やphp-fpm再起動を行う。 Dockerだと PHP_IDE_CONFIG という環境変数をエクスポートしないと動かなかった。 export PHP_IDE_CONFIG="serverName=test" ここのserverNameにはIntellijの設定画面>Language&Frameworks>PHP>Serversで設定されているサーバーのどれを使...