0

私はこの文字列(GoDaddyリストxmlから取得)を持っており、各値を変数に割り当てたいと思います:

オークションタイプ:オファー、オークション終了時間:2012年8月12日午前5時57分(PDT)、価格:4,000ドル、入札数:0、ドメイン年齢:0、説明:1234指相撲を宣言します、1234ideclareathumbwar.com、トラフィック:0、評価:$ 0、IsAdult:true

私の質問は、正規表現を使用してこれを行うにはどうすればよいですか?

私はこれを試しました:

$re  = "Auction Type: (.+?), ";
$re .= "Auction End Time: (.+?) \(.+?\), ";
$re .= "Price: .(.+?), ";
$re .= "Number of Bids: (.+?), ";
$re .= "Domain Age: (.+?), ";
$re .= "Description: (.*?), ";
$re .= "Traffic: (\d*)(.*?)";
$re .= "Valuation: (.+?), ";
$re .= "IsAdult: (.+?), ";

if(preg_match("~".$re."~is",$description,$m)){
    $record = Array('auctiontype' => trim($m[1]),
        'endtime'     => strtotime($m[2]),
        'price'       => str2float($m[3]),
        'bids'        => trim($m[4]),
        'age'         => trim($m[5]),
        'description' => addslashes(trim($m[6])),
        'traffic'     => trim($m[7]),
        'valuation'   => trim($m[8]),
        'isadult'     => trim($m[9])
    );
}

しかし、それは機能しません。助けを求めてもいいですか?

ありがとうございました!

4

2 に答える 2

1
$re  = "Auction Type: (.+?), ";
$re .= "Auction End Time: (.+?) \(.+?\), ";
$re .= "Price: .(.+?), ";
$re .= "Number of Bids: (.+?), ";
$re .= "Domain Age: (.+?), ";
$re .= "Description: (.*?), ";
$re .= "Traffic: (\d*)(.*?), ";
$re .= "Valuation: (.+?), ";
$re .= "IsAdult: (.+?)$";

$reの最後の部分で,私が変更,したものも忘れました$

于 2012-08-13T07:41:15.827 に答える
1

Leon Kramerが言ったように、reの最後の要素を次のように変更する必要があります。

$re .= "IsAdult: (.+)$";

また、この行に$re .= "Traffic: (\d*)(.*?), ";は2つのグループ(つまり、$m[7]と$m[8])が含まれているため、次のように変更します。

$record = Array('auctiontype' => trim($m[1]),
    'endtime'     => strtotime($m[2]),
    'price'       => str2float($m[3]),
    'bids'        => trim($m[4]),
    'age'         => trim($m[5]),
    'description' => addslashes(trim($m[6])),
    'traffic'     => trim($m[7]),
    'valuation'   => trim($m[8]),
    'isadult'     => trim($m[9])
);

$record = Array('auctiontype' => trim($m[1]),
    'endtime'     => strtotime($m[2]),
    'price'       => str2float($m[3]),
    'bids'        => trim($m[4]),
    'age'         => trim($m[5]),
    'description' => addslashes(trim($m[6])),
    'traffic'     => trim($m[7]),
    'valuation'   => trim($m[9]),   // here
    'isadult'     => trim($m[10])   // and here
);

$m[8]与えられた例では空で、あなたが何をしたいのかわかりません。

于 2012-08-13T08:29:56.557 に答える