PHP:获取具有特定索引的两个字符之间的字符串

时间:2016-06-23 07:56:40

标签: php windows

我是PHP的初学者。我有字符串:

$fullstring = "this is [tag]dog[/tag], [tag]cat[/tag], [tag]lion[/tag]";

我想从"cat"获取字符串$fullstring

我曾经试过这个:

Get substring between two strings PHP

但我只能得到第一个字符串(dog)。感谢您的时间。

Thet Cartter。

4 个答案:

答案 0 :(得分:5)

尝试使用preg_match_all

$fullstring = "this is [tag]dog[/tag], [tag]cat[/tag], [tag]lion[/tag]";

preg_match_all("'\[tag\](.*?)\[\/tag\]'si", $fullstring, $match);

foreach($match[1] as $val){
    echo $val, ' ';
}
// result: dog cat lion

仅获取第二个标记的内容(现在是猫)

echo $mathc[1][1]
// result: cat

答案 1 :(得分:0)

您正在寻找preg_match()功能。下面的示例可以帮助您。

 $fullString = "this is [tag]dog[/tag], [tag]cat[/tag], [tag]lion[/tag]";
 $regex = "/\[tag\]\w+\[\\tag\]/";
 preg_match($regex, $fullString, $matches);
 foreach($matches as $match){
     echo $match;
 }
 // result, dog, cat, lion

答案 2 :(得分:0)

这是this answer的修改版本。此函数将根据您要搜索的内容返回它可以找到的所有实例。

    function getContents($str, $startDelimiter, $endDelimiter, $needle) {
    $contents = array();
    $startDelimiterLength = strlen($startDelimiter);
    $endDelimiterLength = strlen($endDelimiter);
    $startFrom = $contentStart = $contentEnd = 0;
    while (false !== ($contentStart = strpos($str, $startDelimiter, $startFrom))) {
        $contentStart += $startDelimiterLength;
        $contentEnd = strpos($str, $endDelimiter, $contentStart);
        if (false === $contentEnd) {
            break;
        }
        $tempString = substr($str, $contentStart, $contentEnd - $contentStart);
        if ($tempString == $needle) {
            $contents[] = $tempString;
        }
        $startFrom = $contentEnd + $endDelimiterLength;
    }

    return $contents;
}

答案 3 :(得分:0)

我尝试修改旧函数[http://www.justin-cook.com/wp/2006/03/31/php-parse-a-string-between-two-strings/]。我明白了:

function get_string_between($string, $start, $end, $index){ if ($index <= 0) return ''; $string = ' ' . $string; $ini = 0; $x = 1; while ($x <= $index) { $ini = strpos($string, $start, $ini + 1); if ($ini == 0) return ''; $x++; } $ini += strlen($start); $len = strpos($string, $end, $ini) - $ini; return substr($string, $ini, $len); }

$ fullstring =&#34;这是[tag] dog [/ tag],[tag] cat [/ tag],[tag] lion [/ tag]; echo get_string_between($ fullstring,&#34; [tag]&#34;,&#34; [/ tag]&#34;,2); // Result = cat