doudu4282 2017-08-30 12:53
浏览 194
已采纳

如何获得两个子串之间的子串?

I want to extract a substring between two substrings. The problem is that it will extract only the first one. I want to do it in all of my document.

Example :

function getBetween($content,$start,$end){
    $r = explode($start, $content);
    if (isset($r[1])){
        $r = explode($end, $r[1]);
        return $r[0];
    }
    return '';
}

$document = '<a data-id="777777"></a><a data-id="888888"></a><a data-id="99999"></a>';
$content = $document;
$start = '<a data-id="';
$end = '"';
$data = getBetween($content,$start,$end);
echo $data;

$document2 = '<a data-A="AAAAAA"></a><a data-A="BBBBBB"></a><a data-A="CCCCCC"></a>';
$content = $document2;
$start = '<a data-A="';
$end = '"';
$data2 = getBetween($content,$start,$end);
echo $data2;

Now it's extracting only 777777 AAAAA. But what I want is 777777 AAAAAA 888888 BBBBBB 999999 CCCCC

  • 写回答

2条回答 默认 最新

  • dongping6974 2017-08-30 13:11
    关注

    Just use preg_match_all function.

    Example:

    <?php
    $document = '<a data-id="777777"></a><a data-id="888888"></a><a data-id="99999"></a>';
    $document2 = '<a data-A="AAAAAA"></a><a data-A="BBBBBB"></a><a data-A="CCCCCC"></a>';
    
    $list1 = [];
    $list2 = [];
    preg_match_all('/<a data-id="([^"]+)"/', $document, $list1);
    preg_match_all('/<a data-A="([^"]+)"/', $document2, $list2);
    print_r([$list1, $list2]);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?