簡體   English   中英

如何在兩個字符串之間找到第二個字符串

[英]How to find the second string between two strings

我一直在研究從某個網站提取信息的腳本。 所述網站從數據庫中提取信息並以用戶可以容易地讀取它的方式顯示它(像往常一樣)。

想象一下它看起來像這樣:

Var1 :result1 Var2: result2 Var3: result3

我的腳本所做的是它讀取頁面的源代碼並通過獲取兩個字符串之間的文本來檢索“result1”,“result2”和“result3”。

示例代碼:

<?php

    function get_string_between($string, $start, $end) {

        $string = " ".$string;
        $ini = strpos($string,$start);
        if ($ini == 0) return "";
        $ini += strlen($start);
        $len = strpos($string,$end,$ini) - $ini;
        return substr($string,$ini,$len);

    }

    function check($url) {

        // usually, $fullstring = file_get_contents($url);
        $fullstring = "<string1>result1</string1><string1>result2</string1><string1>result3</string1>";

        $result = get_string_between($fullstring, "<string1>", "</string1>");

        echo "<b>Result: </b>".$result;

    }

    check("random");    // just to execute the function

?>

如果你想知道為什么我有check()函數,那是因為這個代碼是更大的東西的一部分,我需要一個在這種情況下工作的解決方案,所以我試着保持完美無暇。

現在,我可以輕松獲得“result1”,因為它是第一次出現,但我怎樣才能獲得“result2”和“result3”?

謝謝 :)

使用正則表達式提取所有匹配項,然后選擇您想要的匹配項:

function get_string_between($string, $start, $end) 
{
    preg_match_all( '/' . preg_quote( $start, '/') . '(.*?)' . preg_quote( $end, '/') . '/', $string, $matches);
    return $matches[1];
}

正則表達式將捕獲$start$end變量之間的任何內容。

現在該函數返回一個包含所有結果值的數組,您可以選擇所需的結果值:

list( $first, $second, $third) = get_string_between( $string,  "<string1>", "</string1>");

您可以在此演示中看到它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM