preg_match从数组开头到后斜杠


preg_match from beginning of array to backward slash

有人能解释一下如何使用php preg_match将字符串从字符串的开头到第一个后斜杠分解为数组吗?

我有一个数组:

(
    [0] => s00473276'Soul To Squeeze'Red Hot Chili Peppers
    [1] => t00034422'Soul To Squeeze'Red Hot Chili Peppers
    [2] => 209676'Soul To Squeeze'Red Hot Chili Peppers
    [3] => s00473331'What Is Soul ?'Red Hot Chili Peppers
    [4] => 209672'Show Me Your Soul'Red Hot Chili Peppers
    [5] => t00034415'Show Me Your Soul'Red Hot Chili Peppers
    [6] => s00473268'Show Me Your Soul'Red Hot Chili Peppers
    [7] => s00473233'Out Of Range By Red Hot Chili Peppers'Red Hot Chili Peppers
    [8] => 209603'Get On Top'Red Hot Chili Peppers
    [9] => t00034374'I've Been Down'Red Hot Chili Peppers
)

我想创建另一个数组,这样我就只能使用了

[0] => s00473276
[1] => t00034422 etc...
$new_array = array();
foreach($your_array as $element)
  list($new_array[]) = explode('''', $element);
print_r($new_array);

最简单/"最干净"(警告:主观)的解决方案可能是array_map()explode():

<?php
$array = array('s00473276'Soul To Squeeze'Red Hot Chili Peppers',
               't00034422'Soul To Squeeze'Red Hot Chili Peppers',
               '209676'Soul To Squeeze'Red Hot Chili Peppers',
               's00473331'What Is Soul ?'Red Hot Chili Peppers',
               '209672'Show Me Your Soul'Red Hot Chili Peppers',
               't00034415'Show Me Your Soul'Red Hot Chili Peppers',
               's00473268'Show Me Your Soul'Red Hot Chili Peppers',
);
function myFunc($item) {
        $parts = explode('''', $item, 2);
        return $parts[0];
}
$newArray = array_map('myFunc', $array);
print_r($newArray);

输出:

Array
(
    [0] => s00473276
    [1] => t00034422
    [2] => 209676
    [3] => s00473331
    [4] => 209672
    [5] => t00034415
    [6] => s00473268
)

(演示)

为什么选择preg_match()?将substr()array_map()一起使用将更快。

array_map('f', $array);
function f($s)
{
  return substr($s, 0, strpos($s, ''''));
}

你可以做:

$arr = array();
foreach($yourArray as $key => $value){
  $split = explode('''', $value);
  $arr[$key] = $split[0];
}
print_r($arr);

尝试使用:

$input  = array( /* your data */ );
$output = array();
foreach ( $input as $value ) {
  $output[] = str_split($value, 0, substr($value, '/'));
}

这是使用preg_match

$result = array();
foreach ($a as $value) {
    preg_match("#([^'''']*)''''#", $value, $match);
    $result[] = $match[1];
}