0
foreach($files as $file) {
    $xname = basename($file['name'],'.jpg');
    $tmp = preg_split("/[\s,-]+/",$xname,-1, PREG_SPLIT_NO_EMPTY);

    echo "<pre>";
    print_r($tmp);
    echo "</pre>"; 

这是示例字符串“LR-147-TKW FLOWER RECT MIRROR FRAME”

我有这行代码将我的字符串拆分为数组。我想要它做的是获取前 3 个单词,即“LR-147-TKW”并将其存储到一个变量中。我怎样才能做到这一点?我的数组输出是这个0] => BR [1] => 139 [2] => TKW [3] => DRESSER [4] => BUFFET [5] => MIRROR

4

6 回答 6

1

您可以使用explode(),这里有一些示例:

<?php 
$str = 'LR-147-TKW FLOWER RECT MIRROR FRAME';
$parts = explode(' ',$str);

print_r($parts);
/*
Array
(
    [0] => LR-147-TKW
    [1] => FLOWER
    [2] => RECT
    [3] => MIRROR
    [4] => FRAME
)

*/

$serial_parts = explode('-',$parts[0]);
print_r($serial_parts);
/*
Array
(
    [0] => LR
    [1] => 147
    [2] => TKW
)

*/


$full = array_merge($serial_parts,$parts);
print_r($full);
/*
Array
(
    [0] => LR
    [1] => 147
    [2] => TKW
    [3] => LR-147-TKW
    [4] => FLOWER
    [5] => RECT
    [6] => MIRROR
    [7] => FRAME
)

*/
?>
于 2012-08-29T06:26:41.660 回答
0

这实际上对您当前的输入有用。执行这行代码后,$tmp 将包含 LR-147-TKW:

list($tmp) = explode(' ', $input);
于 2012-08-29T06:19:58.217 回答
0

如何使用explode

$arr = explode(' ',$file);
echo arr[0];

对于这样一个简单的任务,使用preg_split有点矫枉过正......

如果要避免使用数组,可以使用strpossubstr来完成:

$pos = strpos($file, ' ');
echo substr('abcdef', 0, $pos); 
于 2012-08-29T06:20:03.447 回答
0

这是因为preg_split("/[\s,-]+/",...在出现逗号、减号或空格的地方拆分字符串。将其更改为preg_split("/[\s,]+/",...),它应该为您提供正确的数组。

请注意,如果您这样做,您的函数将不会拆分像WELL-SPOKEN. 它将成为您数组中的一个条目。

于 2012-08-29T06:21:19.247 回答
0

考虑到您的字符串具有相同的模式。

$str = "LR-147-TKW 花矩形镜框";

$str1 = 爆炸(' ',$str);

回声 $str1[0];

于 2012-08-29T06:21:46.547 回答
-1

添加到您的代码中:

$tmp = array_slice($tmp,0,3);
于 2012-08-29T06:20:39.697 回答