0

私は次のような文字列を持っています

Samsung Galaxy Ace S5830 (オニキス ブラック)
Samsung Galaxy Y Color Plus S5360 (メタリック グレー)
HTC Radar (ホワイト シルバー)
Micromax X560

次のような特定の文字列を抽出するにはどうすればよいですか

エース s5830
Yカラー プラス s5360
レーダー
X560

文字列から。

4

6 に答える 6

2

メーカーのリストが必要ですが、もしあれば、次のようにすることができます:

$MANUFACTURERS = array(
        "Samsung",
        "HTC",
        "Micromax"
    );
$descriptions = array(
        "Samsung Galaxy Ace S5830 (Onyx Black)",
        "Samsung Galaxy Y Color Plus S5360 (Metallic Grey)",
        "HTC Radar (White Silver)",
        "Micromax X560"
    );

$models = preg_replace(
    array_map(function($manufacturer) { 
        // Build a regex for each manufacturer
        return '/^'. preg_quote($manufacturer) .'\\s*|\\s*\\(.*\\)$/';
    }, $MANUFACTURERS), 
    '', // Replace manufacturer and color with an empty string
    $descriptions
);

出力 ( $models):["Galaxy Ace S5830","Galaxy Y Color Plus S5360","Radar","X560"]

于 2012-04-19T18:00:10.913 に答える
1

あなたは次のような文字列を得ることができます

Samsung Galaxy Ace S5830
HTC Radar

簡単に:

$paren_position = strpos($input, '(');
if ($paren_position !== false) {
   $output = substr($input, 0, $paren_position);
} else {
   $output = $input;
}

、ただし、考えられるすべてのメーカーのリストがないと、文字列からメーカー名を自動的に削除することはできません。メーカーがどこで終わり、モデルがどこから始まるかを自動的に把握する方法はありません。

于 2012-04-19T17:48:14.163 に答える
1

split() を使用します。

最初に '(' を使用して分割し、次に' ' (スペース) を使用して分割し、配列の最後の要素を選択します。

それでおしまい。

于 2012-04-19T17:44:27.673 に答える
1

"Galaxy Ace S5830"これには、例が間違っていて許容可能な出力でない限り、削除したくないプレフィックス文字列のリストが必要です。その場合:

$bits = explode('(', $string);
$bits = explode(' ', $bits[0]);
array_shift($bits);
$out = trim(implode(' ', $bits));

これは で分割され(、最初の開き括弧の前にすべてが取られます。次に、スペースで分割し、文字列の最初の単語を削除してから、残りの文字列を結合します。

コードと出力の例: http://codepad.org/Uxni2Xbr

于 2012-04-19T17:51:06.660 に答える
1

これを使用するだけです:

$str = "Samsung Galaxy Ace S5830 (Onyx Black)";

$res = preg_split("/\s*\(/",$str);
$res = $res[0];

Samsung Galaxy Ace S5830次の文字列を取得します。$res

于 2012-04-19T17:52:50.400 に答える
1

preg_match 関数を使用します。

preg_match('/([^(]+)/', "Samsung Galaxy Ace S5830 (Onyx Black)", $matches);

http://php.net/manual/en/function.preg-match.phpを参照してください

于 2012-04-19T17:52:50.590 に答える