0

RSS フィードから出力する wordpress ウィジェットにコード行があります。

<?php echo $entry->title ?>

表示されると、次のようになります。

$220,000 :: 504 Freemason St, Unit 2B, Norfolk VA, 23510

また

$274,900 :: 1268 ベルズ ロード、バージニア ビーチ VA、23454

これをさまざまなオブジェクトに分割する最も簡単な方法は何ですか?

たとえば、価格、通りの名前、市区町村を別のオブジェクトにまとめたいと考えています。問題は、一部のアドレスにユニット番号があり、事態が複雑になっていることです。以下は、私がどのように機能させたいかの例です。

<?php echo $entry->price ?>
<?php echo $entry->street ?>
<?php echo $entry->citystatezip ?>

$220,000
504 Freemason St, Unit 2B
Norfolk VA, 23510

また

$274,900
1268 ベルズ ロード
バージニア ビーチ バージニア州、23454

4

4 に答える 4

2

必要なのは正規表現です。http://php.net/manual/en/function.preg-match.phpを確認してください。

于 2012-12-21T15:37:04.893 に答える
2

これは、文字列を解析できると思われる非常に粗い正規表現です。私は正規表現が得意ではありませんが、うまくいくようです。

/^(\$(?:\d{1,3},?)*) :: (\d* [\w\s,\d]*), ([\w\s]* \w{2}, \d{5})$/

これをpreg_match;と一緒に使用します。最初のグループは価格、2 番目は住所、3 番目は都市/州/郵便番号です。

例:

<?php
$ptn = '/^(\$(?:\d{1,3},?)*) :: (\d* [\w\s,\d]*), ([\w\s]* \w{2}, \d{5})$/';
if(preg_match($ptn, $entry->title, $match) === 1){
    $price = $match[1];
    $street = $match[2];
    $citystatezip = $match[3];
}
于 2012-12-21T15:47:11.077 に答える
0

array explode ( string $delimiter , string $string [, int $limit ] )正しい区切り文字を使用すると、文字列を含む配列が得られるfeを使用します

于 2012-12-21T15:36:36.703 に答える
0

以下のコードは、必要に応じて $entry オブジェクトを埋めます。

$string = '$274,900 :: 1268 Bells Road, Virginia Beach VA, 23454';
$pricePart = explode('::', $string);
$addressPart = explode(',', $pricePart[1]);

$entry = new stdClass();
$entry->price = trim($pricePart[0]);

if ( count($addressPart) == 3 ) {
    $entry->street = trim($addressPart[0]);
    $entry->citystatezip = trim($addressPart[1]) . ', ' . trim($addressPart[2]);
} else {
    $entry->street = trim($addressPart[0]) . ', ' . trim($addressPart[1]);
    $entry->citystatezip = trim($addressPart[2]) . ', ' . trim($addressPart[3]);
}

単位ビットを処理するための更新された回答

更新: 配列の名前を変更しました。私は $array.. の名前が嫌いです.. 単なるモックアップであっても

(注: このコードは最も美しいものではありませんが、作業のベースを提供するためのものです。クリーンアップして少し改善する必要があります)

于 2012-12-21T15:38:28.763 に答える