1

ライセンス PHP システムを使用しようとしています... ライセンスのステータスをユーザーに表示したいと思います。ライセンス サーバーから次の情報が得られます。

name=Service_Name;nextduedate=2013-02-25;status=Active

次のようにデータを分離する必要があります。

$name = “Service_Name”;
$nextduedate = “2013-02-25”;
$status = “Active”;

preg_match_allでこの問題を解決するのに2日間かかりますが、できません:(

4

3 に答える 3

2

これは、正規表現なしで簡単に解決できます。の使用はexplode()あなたを助けます。

$str = "name=Service_Name;nextduedate=2013-02-25;status=Active";

$split = explode(";", $str);
$structure = array();

foreach ($split as $element) {
    $element = explode("=", $element);
    $$element[0] = $element[1];
}

var_dump($name);

代わりに配列を使用することをお勧めしますが。存在せず、明示的に宣言されていない変数を発明するよりもはるかに読みやすくなっています。

于 2012-11-26T18:55:02.970 に答える
2

;に置き換えると、これは基本的にクエリ文字列です&。次のように試すことができますparse_str()

$string = 'name=Service_Name;nextduedate=2013-02-25;status=Active';
parse_str(str_replace(';', '&', $string));

echo $name; // Service_Name
echo $nextduedate; // 2013-02-25
echo $status; // Active
于 2012-11-26T18:56:11.897 に答える
0

テキストをセミコロンに沿って別々の行に分割し、先頭にドル記号を追加してから、スペースと引用符を追加したいようです。正規表現を使用して1つのステップでそれを実行できるかどうかはわかりませんが(または、少なくともその正規表現がどのようになるかについては考えたくありません)、複数のステップで実行できます。

  1. preg_split()を使用して、文字列をセミコロンに沿った配列に分割します。
  2. 配列をループします。
  3. str_replaceを使用して、各'='を'="'に置き換えます。
  4. 文字列の連結を使用して、各文字列の先頭に$を追加し、末尾に";を追加します。

データに引用符、等号、セミコロンなどが含まれていない場合は、これでうまくいくはずです。もしそうなら、あなたはそのための構文解析規則を理解する必要があります。

于 2012-11-26T19:07:14.133 に答える