No.2
- 回答日時:
preg_match('/^(?:[^_]*_){2}(.+)$/', 'zwed_fgrty_abcde_h', $matches);
echo $matches[1];
回答ありがとうございました。
期待した結果を取得できましたが、正規表現部分が難しかったです。
・^ … 先頭が
・(?:[^_]*_) … キャプチャ
・[^_]*_ … 先頭が_で開始するもの以外の全ての後に_が続くもの
・先頭が_で開始するもの以外の全ての後に_が続くものを2回キャプチャして、(.+)している
No.4
- 回答日時:
行末のセミコロン抜けちゃってましたね
echo implode('_' ,array_slice(explode('_' ,'zwed_fgrty_abcde_h') ,2));
回答ありがとうございました。
期待した結果を取得できました。
'_'を区切り文字として配列にした後、処理しているのですね。
この発想はなかったので、大変参考になりました
No.5
- 回答日時:
それぞれの回答者さんの書かれた処理、質問者さんの「zwed_fgrty_abcde_h」を渡した場合の結果は同じですが、
「abc_def」みたいに「_」の数が2個に満たない文字列を渡した時の挙動はそれぞれ違って面白いですね。
No.3の方の回答、PCブラウザで見ると確かに行末付近が欠けてるんですが、スマホアプリで見るとちゃんと最後まで表示されています。
教えて!goo側のバグですね。
回答ありがとうございました。
>「abc_def」みたいに「_」の数が2個に満たない文字列を渡した時の挙動
・なるほど、その可能性を考慮していませんでした
・バグを生み出す元になっていたかもしれません
・大変参考になりました
No.6
- 回答日時:
もう少し簡潔にならないか考えてみましたが、こんな書き方もできますね。
echo @explode('_', 'zwed_fgrty_abcde_h', 3)[2];
「@」を使うのに抵抗があれば、
$arr = explode('_', 'zwed_fgrty_abcde_h', 3);
echo isset($arr[2]) ? $arr[2] : '';
等でもいいでしょう。
回答ありがとうございました。
>echo @explode('_', 'zwed_fgrty_abcde_h', 3)[2];
・@使用している理由は何ですか?
・@使用したことがないため理由が分からないのですが、エラー表示しないためですか?
No.7
- 回答日時:
「@」はエラー制御演算子というもので、本来ならWarningやNoticeとなるような場合でも、これを付けておくことでそれを無視できます。
> echo @explode('_', 'zwed_fgrty_abcde_h', 3)[2];
この例の場合、与える文字列が 'zwed_fgrty_abcde_h' ならば問題ないのですが、'zwed_fgrty' や 'zwed' のような「_」が2個に満たない文字列だった場合、添字の[2]に当たるデータが無いため、本来なら
Notice: Undefined offset: 2
が出るのですが、「@」を付けることでこれが無視され、何事もなかったようにNULLが返されます。
結果が分かった上で使う分にはいいのですが、無闇に使うと致命的なエラーが発生していたとしても気付きにくくなるため、「原因は分からないけれどWarningが出るのでとりあえず@を付けて対処」というような使い方はしないほうがよいのです。
詳細解説ありがとうございました。
良く分かりました。
>結果が分かった上で使う分にはいい
>「原因は分からないけれどWarningが出るのでとりあえず@を付けて対処」というような使い方はしないほうがよい
・なるほど。考え方が、大変参考になりました
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP phpの imap_search で漢字コード 1 2022/09/06 17:32
- PHP SQLとPHPの連結方法がわからないのでアドバイスお願い致します 1 2022/07/12 12:16
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- その他(Microsoft Office) エクセル置き換え 指定の出現回数以降の文字列 3 2022/07/29 19:44
- Excel(エクセル) Excelのマクロで、特定のセルから順番に値を取得したい 5 2022/12/06 15:34
- その他(コンピューター・テクノロジー) 【Tableau Desktop】文字列から8桁の数字を日付型(yyyyMMdd)として取得 1 2023/07/31 10:17
- Excel(エクセル) エクセルについて教えてください。 1回目が80以上(数字) or 対象外 (文字列)or (空欄) 2 2022/10/17 11:42
- Excel(エクセル) LEFT関数で文字数を指定しないで取りだす方法 7 2023/06/30 09:49
- PHP substrの使い方について教えて下さい。 4 2023/02/17 15:59
- Visual Basic(VBA) batにて、異なるフォルダの同名ファイルを参照し、文字列を判別。擬似配列で変数へ格納 3 2022/04/10 03:37
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Dosブロンプトでtabを出力したい
-
switch()文で値の大小比較
-
バッチファイルでpingの結果を...
-
shシェルスクリプト 空白行の...
-
phpでcookieがうまく保存されない
-
変数の受け渡しによる画像の表示
-
PHP一覧表示した項目にリンクを...
-
小数点以下0の非表示
-
PHPでのパスワード制限のセキュ...
-
batファイルでPC名称の変更
-
findstrのerrorlevel
-
三項演算子/echoとprintの違い
-
環境変数「%USERPROFILE%」の内...
-
$_SERVER["REQUEST_METHOD"]に...
-
バッチファイルで、全てのウィ...
-
オブジェクトの中身の判定(PHP)
-
PHPとCSSを使用して九九...
-
RSSにdiv,ul classを付けたいの...
-
DBのハッシュ化したパスワード...
-
syntax error, unexpected 'ech...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Dosブロンプトでtabを出力したい
-
switch()文で値の大小比較
-
phpでcookieがうまく保存されない
-
バッチファイルでpingの結果を...
-
shシェルスクリプト 空白行の...
-
syntax error, unexpected 'ech...
-
findstrのerrorlevel
-
バッチファイルで、全てのウィ...
-
PHPで訪問回数を表示するカウン...
-
PHP一覧表示した項目にリンクを...
-
DBのハッシュ化したパスワード...
-
小数点以下0の非表示
-
Windowsのsetコマンドでの小数...
-
オブジェクトの中身の判定(PHP)
-
bashの関数の引数にスペースが...
-
PHPでのパスワード制限のセキュ...
-
RSSにdiv,ul classを付けたいの...
-
pdftkを使った処理をバッチファ...
-
ゼロとNULLを区別して number_f...
-
コマンドプロンプト フォルダ内...
おすすめ情報