0

osCommerce で作成した e ショップ全体を OpenCart にインポートする必要があります。ここまでは順調ですね。SEO といくつかのスパース データ ビットを除いて、ほとんどすべてを正常にインポートできましたが、住所の形式に問題があります。

osCommerce は$firstname $lastname$cr$streets$cr$city, $postcode$cr$statecomma$countryを使用し、OpenCart は{company} {firstname} {lastname} {address_1} {address_2} {postcode} {city} {country}を使用します.

間違っているかもしれませんが、これらの文字列セットの基本的な違いを見て、osCommerce 形式のアドレス形式文字列を OpenCart 形式のアドレス形式文字列に変換するには、正規表現が適切なツールになると思いました。

ただし、正規表現では完全にヌルです。私のニーズに最も適した正規表現を誰か教えてもらえますか? または、正規表現なしで実行できる場合、またはそれらが悪い考えである場合、どの方法を試してみるべきですか?

4

2 に答える 2

2

cr改行または改行を表し$、ソース文字列にリテラルのドル記号があると仮定します。

並べ替えるには、住所の一部をキャプチャして、置換文字列で使用する必要があります

^\$(.+?)\$(.+?)\$.\$(.+?)\$.\$(.+?)\$(.+?)\$.\$(.+?)\$(.+?)\$(.+)$

そしてそれを

{}{$1}{$2}{$3}{}{$5}{$4}{$7}

したがって、これは次のようになります

$re = '/^\\$(.+?)\\$(.+?)\\$.\\$(.+?)\\$.\\$(.+?)\\$(.+?)\\$.\\$(.+?)\\$(.+?)\\$(.+)$/s';
$replacement = '{}{$1}{$2}{$3}{}{$5}{$4}{$7}';
$new_address = preg_replace($re, $replacement, $address);

explodeしかし、分割にも使用できます

$parts = explode('$', $address);

次に、ブレースを並べ替えて挿入することで、パーツを再び組み立てます。

于 2013-03-14T11:27:01.350 に答える
1

OpenCart アドレスは、これらのデータごとに個別のフィールドとして保存されます。あなたが指定した OC の形式は、請求書の住所などの視覚的なデータ用です。addressただし、そのアドレスのすべてのデータには独自のフィールドがあり、またはorderテーブルを見ればわかります。アドレスには ISO コードも添付されていることに注意してください。問題を回避するために、インポートする際にはそのことを考慮する必要があります。osCommerce が同様の方法でデータを保存すると仮定すると (個人的には使用していません)、古い列を新しい列にマップするだけで済みます。ただし、それらが単一のテキストとして保存されていて、それを抽出する必要がある場合は、これを使用できます

%^(\w+) (\w+)\s+([\w ]+)\s+([\w ]+)\s+([\w ]+)\s+([\w]+),\s*(\w+)$%

これをアドレスの例として使用してテスト

My Name
Street name
City name
P05T C0D3
State, Country
于 2013-03-14T12:04:55.950 に答える