php - 文字列を配列に分割する

php regex arrays

この文字列を必要なパターンの配列に分割するのに問題があります。文字列は次のとおりです。

ATTRIBUTE1: +VALUE1;
ATTRIBUTE2: -VALUE2%;


私は基本的にこのような配列が必要です:

array (
    [0] => "ATTRIBUTE1", 
    [1] => "+", 
    [2] => "VALUE1", 
    [3] => "%"
)
array (
    [0] => "ATTRIBUTE2", ...
)


「%」はオプションですが、+ /-記号はオプションです。何か助けていただければ幸いです!
答え
あなたは正規表現を使うことができます:

$text= "ATTRIBUTE1: +VALUE1;\nATTRIBUTE2: -VALUE2%;";
echo "STRING\n" . $text . "\n\n";

preg_match_all("~
                ^             # match start of line
                ([^:]+):\s*   # match anything that's not a ':' (attribute), followed by a colon and spaces
                ([+-])        # match a plus or a minus sign
                ([^%;]+)      # match anything that's not a '%' or ';' (value)
                (%?)          # optionally match percent sign 
                ;\s*$         # match ';' then optional spaces and end of line
                ~mx", $text, $matches, PREG_SET_ORDER);

print_r($matches);


プリント:

STRING
ATTRIBUTE1: +VALUE1;
ATTRIBUTE2: -VALUE2%;

Array
(
    [0] => Array
        (
            [0] => ATTRIBUTE1: +VALUE1;
            [1] => ATTRIBUTE1
            [2] => +
            [3] => VALUE1
            [4] => 
        )

    [1] => Array
        (
            [0] => ATTRIBUTE2: -VALUE2%;
            [1] => ATTRIBUTE2
            [2] => -
            [3] => VALUE2
            [4] => %
        )

)


あなたは正規表現をいじり回す必要があるかもしれませんが、それは今コメントを持っているので、それを理解することはそれほど難しくないはずです。
関連記事

php - 偽の管理者ログインの設定

php - AJAXを介して大規模なデータセットを処理しても速度のメリットはありません

php - 変化しているファイルを恐れる

php - グループのFacebookアプリケーションを作成する方法

php - PHP変数をJavaScriptとJavaScriptのifステートメントに渡す[重複]

php - Codeigniterでのウォーターマークの回転

php - コメントの投稿後にユーザーをリダイレクトする方法

php - Wordpress:実行時間の長いプラグインスクリプトによってブロックされたフロントエンド

php - 古いPHPコードをオブジェクト指向にするためのデザインパターン

php - PHP関数に渡された変数の名前を取得しますか?