User Tools

Site Tools


ja:rule:out:pcreメタ文字のエスケープはデリミター文字を指定する

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
ja:rule:out:pcreメタ文字のエスケープはデリミター文字を指定する [2016/07/14 01:51] – [pcreメタ文字のエスケープはデリミター文字を指定する] yohgakija:rule:out:pcreメタ文字のエスケープはデリミター文字を指定する [2016/07/14 01:55] (current) – [非適合コード例(非互換エスケープ関数の利用)] yohgaki
Line 4: Line 4:
  
  
-===== 非適合コード例 =====+===== 非適合コード例(デリミター文字なし) =====
  
 <code php> <code php>
          foreach ($parameters as $parameter => $replacement) {          foreach ($parameters as $parameter => $replacement) {
              $quoted = preg_quote($parameter); // ここが非適合              $quoted = preg_quote($parameter); // ここが非適合
 +             // making sure that :param does not apply values to :param1
 +             $sql_query = preg_replace(
 +                 '/' . $quoted . '([^a-zA-Z0-9_])/',
 +                 PMA\libraries\Util::sqlAddSlashes($replacement) . '${1}',
 +                 $sql_query
 +             );
 +             // for parameters the appear at the end of the string
 +             $sql_query = preg_replace(
 +                 '/' . $quoted . '$/',
 +                 PMA\libraries\Util::sqlAddSlashes($replacement),
 +                 $sql_query
 +             );
 +         }
 +</code>
 +
 +===== 非適合コード例(非互換エスケープ関数の利用) =====
 +
 +[[http://php.net/manual/ja/function.quotemeta.php|quotemeta関数]]はPCRE正規表現のエスケープに利用できない。エスケープ対象文字が異る上、デリミター文字が指定できない。
 +
 +<code php>
 +         foreach ($parameters as $parameter => $replacement) {
 +             $quoted = quotemeta($parameter); // ここが非適合。quotemeta関数はPCRE用のエスケープ関数ではない。
              // making sure that :param does not apply values to :param1              // making sure that :param does not apply values to :param1
              $sql_query = preg_replace(              $sql_query = preg_replace(
ja/rule/out/pcreメタ文字のエスケープはデリミター文字を指定する.1468461084.txt.gz · Last modified: 2016/07/14 01:51 by yohgaki

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki