php 如何在数组中获取所有中间字符串,去除左右

z18hc3ub  于 2023-08-02  发布在  PHP
关注(0)|答案(3)|浏览(103)

我想从字符串中删除左和右文本,就像我有(20-100=500&101-200=1000)这,所以我想从左和右=中删除,并在数组Array中得到结果([0] => 100 [1] => 200)...
请帮我一下。

function mid($start, $end, $str) {
    $str = substr($str, strpos($str, $start) + strlen($start));
    $data[]=substr($str, 0, strpos($str, $end));
return $data;
}

字符串
第一个月
我有这个,但这个只给我Array([0] => 100)我想要Array([0] => 100 [1] => 200)

6ss1mwsb

6ss1mwsb1#

您提供的mid函数旨在从原始字符串中提取一个子字符串,该子字符串在$start之后开始,在$end之前结束。但是,它只提取子字符串的第一个匹配项。如果要提取“-”和“=”之间的多个匹配项,则需要修改函数以遍历字符串并查找所有匹配项。
这里有一个更新版本的函数来实现这一点:

function mid($start, $end, $str) {
    $data = array();
    $offset = 0;
    
    while (($pos_start = strpos($str, $start, $offset)) !== false) {
        $pos_start += strlen($start);
        $pos_end = strpos($str, $end, $pos_start);
        
        if ($pos_end === false) {
            break;
        }
        
        $data[] = substr($str, $pos_start, $pos_end - $pos_start);
        $offset = $pos_end + strlen($end);
    }
    
    return $data;
}

print_r(mid('-', '=', '20-100=500&101-200=1000'));

字符串
这将为您提供所需的输出:

Array
(
    [0] => 100
    [1] => 200
)


更新后的函数将查找原始字符串中所有出现在'-'和'='之间的子字符串,并将它们作为数组返回。

ifsvaxew

ifsvaxew2#

我使用这些有用的函数来轻松提取字符串。

function after($this1, $inthat)
{
    if (!is_bool(strpos($inthat, $this1))) {
        return substr($inthat, strpos($inthat, $this1) + strlen($this1));
    }
    return '';
}

function before($this1, $inthat)
{
    return substr($inthat, 0, strpos($inthat, $this1));
}

function between($this1, $that, $inthat)
{
    return before($that, after($this1, $inthat));
}

字符串
至于你的问题,这是一个爆炸,提取,内爆。

$arr = explode ('&', $str);
$brr = array_map (function ($item) {
    return between('-', '=', $item);    
}, $arr);
$result = implode ('&', $brr);

inkz8wg9

inkz8wg93#

<?php
    $str = "20-100=500&101-200=1000";
    preg_match_all('/-(.*?)=/', $str, $matches);
    print_r($matches[1]);
?>

字符串
https://onlinephp.io/c/e86860
将输出:

Array
(
    [0] => 100
    [1] => 200
)

相关问题