繁体   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