0

JDBC で実行するクエリを送信するには、/* と */ の間のテキストを削除する必要があります。

/*==============================================================**/
/* Description : ... */
/* Author   : rgosse                                                  */
/* Date de création du script : 25/04/2013                    */
/*==============================================================*/

/*==============================================================*/
/* PISTE D'AUDIT                                                */
/*==============================================================*/
declare @username varchar(25)
declare @dateNow datetime
declare @contact_id numeric
...

preg_replace でできますか?

みたいな

preg_replace("/[/*][^*\/]+\[*/]/","", $sql);
4

3 に答える 3

2

このパターンを使用できます

$code = preg_replace('~/\*(?>[^*]++|\*++(?!/))*\*++/~', '', $code);

詳細:

~              # delimiter (instead of /, avoid to escape all the / in the pattern)
/              # literal /
\*             # literal * (must be escaped since it's a special character)
(?>            # open a non capturing group (atomic)
    [^*]++     # all characters except * one or more times
  |            # OR
    \*++(?!/)  # * one or more times not followed by /
)*             # repeat the group zero or more times (here * is a quantifier)
\*++           # * one or more times
/              # literal /
~              # pattern delimiter
于 2013-07-28T11:58:28.233 に答える
0

コメント間のテキストを置き換えるには、最初と最後のコメントを一致させてから、それらの間の要素を置き換える必要があります。は修飾子であるため、PHP で自然な動作でエラーが発生しないよう*にエスケープする必要があります。\*

注:以下では、バランスの取れたコメント マークを想定しています。

$code = "
/*==============================================================**/
/* Description : ... */
/* Author   : rgosse                                                  */
/* Date de création du script : 25/04/2013                    */
/*==============================================================*/

/*==============================================================*/
/* PISTE D'AUDIT                                                */
/*==============================================================*/
declare @username varchar(25)
declare @dateNow datetime
declare @contact_id numeric
";

$pattern = "!(/\*).+(\*/)!";
$replacement = '/**/';

$newCode = preg_replace($pattern,$replacement,$code);

echo $newCode;

出力:

/**/
/**/
/**/
/**/
/**/

/**/
/**/
/**/
declare @username varchar(25)
declare @dateNow datetime
declare @contact_id numeric

すべてのコメントを完全に置き換えたい場合は、次の変更を行います。

$replacement = '';
于 2013-08-04T14:44:00.647 に答える
0

次のような文字をエスケープする必要があります/*それらには特別な意味があるため、1 か所でしか行っていません。以下のコードでうまくいくはずです

 preg_replace("^/\/\*[^*\/]+\*\/$/","", $sql);
于 2013-07-28T11:47:30.883 に答える