使用删除选项数组删除字符串的前部

时间:2014-06-09 12:52:04

标签: php arrays

假设:

  • 一系列型号,即(30, 50, 55, 85, 120)
  • 一个字符串,其中包含保证在数组中的型号,后面紧跟一个子模型号。子模型可以是1到50之间的数字。
  • 示例:1202250255123

通缉:

  • 仅包含子模型编号的单个输出字符串,即222123
  • 又删除了数组中字符串的前部
  • 示例:12022 => 221202 => 2502 => 255123 => 1235050 => 50

我可以想出各种方法来做到这一点,但寻找简洁的东西。奖金,如果它也美观:)

4 个答案:

答案 0 :(得分:0)

我的尝试:

$v = array(120, 50, 55);
print removeModel("502", $v);

function removeModel($str, $v)
{
    foreach($v as $value)
        if (preg_match("/^$value/",$str))
            return preg_replace("/$value/", "", $str);
}

答案 1 :(得分:0)

您可以使用substr($yourString, $x)功能从$x剪切$yourString个字符。

我的想法:

    <?php
    $str = "502"; //or "12022" for testing
    if(strlen($str)==3) 
        $newStr=substr($str, (strlen($str)-1)); //502 -> 2
    else
        $newStr=substr($str, (strlen($str)-2)); //12022 -> 22
    echo ltrim($newStr, '0');
    ?>

答案 2 :(得分:0)

<?php
    $arr = array(30, 50, 55, 85, 120); // Array of forbiddens
    $str = "12022, 502, 55123"; // Your string
    $sep = array_map('trim', explode(",", $str));
    foreach($sep as $key => $value)
        foreach ($arr as $sec)
            if(preg_match("@^$sec@", $value))
                $sep[$key] = substr($value, strlen($sec));
    print_r($sep);

<强> 输出

Array
(
    [0] => 22
    [1] => 2
    [2] => 123
)

答案 3 :(得分:-4)

只需循环数组并将字符串中的每个数组值替换为空字符串