[解決済み] キャラクタークラスでレンジの順番が狂っている
2022-02-09 05:16:41
質問
preg_match()関数でこんな変なエラーが出るんだけど。
警告: preg_match(): Compilation failed: range out of order in character class at offset 54
原因となっている行は
preg_match("/<!--GSM\sPER\sNUMBER\s-\s$gsmNumber\s-\sSTART-->(.*)<!--GSM\sPER\sNUMBER\s-\s$gsmNumber\s-\sEND-->/s", $fileData, $matches);
この正規表現は、HTMLファイルをパースして、間の部分のみを抽出します。
<!--GSM PER NUMBER - 5550101 - START-->
とします。
<!--GSM PER NUMBER - 5550101 - END-->
このエラーの原因について、何かヒントをお持ちですか?
解決方法を教えてください。
もし
$gsmNumber
が角括弧、バックスラッシュ、その他様々な特殊文字を含んでいる場合、このエラーが発生する可能性があります。 もしそれが可能なら、この時点までに実際に数字であることを確認するために、それを検証しておくとよいでしょう。
2016年を編集しています。
正規表現内の特殊文字をエスケープするPHP関数が存在します。
preg_quote()
.
このように使います。
preg_match(
'/<!--GSM\sPER\sNUMBER\s-\s' .
preg_quote($gsmNumber, '/') . '\s-\sSTART-->(.*)<!--GSM\sPER\sNUMBER\s-\s' .
preg_quote($gsmNumber, '/') . '\s-\sEND-->/s', $fileData, $matches);
明らかにこの場合、同じ文字列を2回使っているので、最初に引用したバージョンを変数に代入して、それを再利用することができます。
関連
-
[解決済み】Notice: 非オブジェクトのプロパティを取得しようとしているエラー
-
[解決済み】phpのob_start()の使い道は?
-
[解決済み] 整形されていない数値が発生しました。
-
[解決済み】SQLSTATE[42000]: 構文エラーまたはアクセス違反が発生しました。1064 SQL 構文にエラーがあります - PHP - PDO [重複]。
-
[解決済み】空の配列要素を削除する
-
[解決済み】XAMPPエラー: www.example.com:443:0 サーバー証明書に、サーバー名と一致するIDが含まれていません。
-
[解決済み】 $_SERVER['DOCUMENT_ROOT'] と $_SERVER['HTTP_HOST'] の違いについて]
-
[解決済み】mysqli_select_db()は、パラメータ1がmysqliであることを期待し、文字列が与えられる。
-
MacでPHPを実行した際に、メモリサイズが134217728バイトも消費される問題の解決方法について
-
[解決済み】Wordpressの子テーマのstyle.cssが効かない。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] [Solved] Fatal error: メンバ関数prepare()のNULLでの呼び出し
-
[解決済み】php, mysql - データベースへの接続数が多すぎるエラー
-
[解決済み】Xampp ローカルホスト/ダッシュボード
-
[解決済み】 $_SERVER['DOCUMENT_ROOT'] と $_SERVER['HTTP_HOST'] の違いについて]
-
[解決済み】Chrome net::ERR_INCOMPLETE_CHUNKED_ENCODING エラーが発生しました。
-
[解決済み】SSLピア証明書またはSSHリモートキーがOKでなかった
-
[解決済み】chromeの「net : Failed to load resource: net::ERR_SPDY_PROTOCOL_ERROR" は何がおかしいのか?
-
[解決済み] Uncaught SyntaxError: JSON の位置 1 に予期しないトークン o があります。
-
[解決済み] $_SERVER['DOCUMENT_ROOT'] と $_SERVER['HTTP_HOST'] の違いについて
-
[解決済み] 01-12]レンジが期待通りに動作しないのはなぜですか?