我有一个字符串,
三星Galaxy Ace S5830(Onyx Black)
三星Galaxy Y Color Plus S5360(金属灰)
HTC雷达(白银)
Micromax X560
我如何提取像
这样的特定字符串Ace s5830
Y color Plus s5360
雷达
X560
来自字符串。
答案 0 :(得分: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"]
答案 1 :(得分:1)
使用split()。
首先使用'('&然后拆分使用''(空格)&挑选数组的最后一个元素。
就是这样。
答案 2 :(得分:1)
你可以获得像
这样的字符串Samsung Galaxy Ace S5830
HTC Radar
简单:
$paren_position = strpos($input, '(');
if ($paren_position !== false) {
$output = substr($input, 0, $paren_position);
} else {
$output = $input;
}
,但如果没有所有可能的制造商列表,您永远不能自动从字符串中删除制造商名称。没有办法自动确定制造商的结束位置和模型的开始。
答案 3 :(得分:1)
这需要您不想删除的前缀字符串列表,除非您的示例错误且"Galaxy Ace S5830"
是可接受的输出。在那种情况下:
$bits = explode('(', $string);
$bits = explode(' ', $bits[0]);
array_shift($bits);
$out = trim(implode(' ', $bits));
这分裂在(
上,在第一次开场之前拿走了所有内容。然后它会在空格上拆分,删除字符串中的第一个单词,然后将其余的字符串重新连接起来。
示例代码和输出:http://codepad.org/Uxni2Xbr
答案 4 :(得分:1)
请使用:
$str = "Samsung Galaxy Ace S5830 (Onyx Black)";
$res = preg_split("/\s*\(/",$str);
$res = $res[0];
现在,您将在Samsung Galaxy Ace S5830
$res
答案 5 :(得分:1)
使用preg_match函数:
preg_match('/([^(]+)/', "Samsung Galaxy Ace S5830 (Onyx Black)", $matches);