この記事では、次のようなことをJavaScriptで実現する方法を紹介します。
- ダブルクォーテーションを別の文字に置き換える
- 改行やタブなどの文字として認識されないものを別の文字に置き換える
- “を含む文字列をSQLに入れられない問題を解決する
ダブルクォーテーションを別の文字に置き換える方法
I said “Hello!” → I said ‘Hello!’
上の例ようにダブルクォーテーションをシングルクォーテーションに置き換えたい場合、JavaScriptでは次のように書くことができます。
let str = 'I said "Hello!"';
console.log(str); //置き換え前の文字列を出力
str = str.replace(/"/g, '\''); //置き換えの処理をしている部分
console.log(str); //置き換え後の文字列を出力
出力結果は次のようになります。
I said "Hello!"
I said 'Hello!'
“ の部分がしっかりと ‘ に置き換わりました。
ダブルクォーテーションを\”に置き換える方法
JavaScript内でSQLを使って、ダブルクォーテーションが含まれている文字列をでテーブルに追加したい時があると思います。
例えば、次のようにHTMLタグをテーブルに入れたい場合を考えてみましょう。width=”560″という具合で属性値のところにダブルクォーテーションが使われていますよね。
et str = '<iframe width="560" height="315" src="https://www....';
con.query(`INSERT INTO clips values ("", "${str}", "#話し方", "スラスラ話せる")
こんなときはSQLを実行より先にダブルクォーテーションの直前に\マーク(またはバックスラッシュ)をつけておく必要があります。
そうしないと、JavaScriptからSQLを実行時したときに構文エラーになる可能性があります。
①文字列strはSQL実行時に構文エラーになってしまう
let str = ‘<iframe width=“560“ height=“315“ src=“https://www….’;
②文字列strはSQL実行時に構文エラーにならない
let str = ‘<iframe width=\”560\” height=\”315\” src=\”https://www….’;
そこで今回紹介した、ダブルクォーテーションを置き換える方法を使うことで上②のような文字列にする事が可能です。
let str = '<iframe width="560" height="315" src="https://www....';
console.log(str);
str = str.replace(/"/g, '\\"');
console.log(str);
con.query(`INSERT INTO clips values ("", "${str}", "#話し方", "スラスラ話せる");
タブや改行なども別の文字に置き換える事ができる
ダブルクォーテーション以外の文字も、別の文字に置き換えられます。
let str = `
1行目
2行目
3行目`;
console.log(str); //置き換え前
str = str.replace(/\n/g, ''); //改行を空文字に置き換え
console.log(str); //置き換え後
こちらの例では、改行を空文字に置き換えています。実質的には改行を削除していることになります。改行ではなくタブも全く同じように置き換える事ができます。
エラーの原因になり得る
ダブルクォーテーションを中に入れるときだけうまく動作しなかったり、エラーが発生したりすることがあります。
その原因はもしかすると、“ の前にバックスラッシュを置いていないことが原因かもしれません。
"なにかの文字" → \"なにかの文字\"(こんな感じの処理がされていないことが原因かもしれない)
今回紹介した方法を使ってみて正常に動くようになるかどうかを検証してみてください。
コメント