Как найти строку между двумя подстроками? - PullRequest
0 голосов
/ 04 ноября 2011

У меня есть текст.

\ cf1 \ i (Wong v. Tenneco, Inc. (1985) 39 Cal.3d 126, 135 [216 Cal.Rptr. 412, 702 P.2d 570]; Knodel v. Knodel(1975) 14 Cal.3d 752, 765, fn. 15 [122 Cal.Rptr. 521, 537 P.2d 353].) \ Cf0 \ i0 Этот подход был давно провозглашен судьей Кардосо, который объяснил, что суды не будутотказать в принудительном применении иностранного дела, если только применение иностранного закона «не нарушит какой-то фундаментальный принцип справедливости, некоторую распространенную концепцию добрых нравов, некоторую глубоко укоренившуюся традицию общего благосостояния».\ cf1 \ i (Loucks v. Standard Oil Co. (1918) 224 NY 99, 111 [120 NE 198, 202].) \ cf0 \ i0 Калифорнийское дело, \ cf1 \ i Bryant v. Mead (1851) 1 Cal.441 \ cf0 \ i0

здесь: у меня есть

$1st  = "\cf1\i"; 
$2nd = "\cf0\i0";

эти две подстроки.Мне нужно найти строку, начинающуюся с $1st и заканчивающуюся $2nd в этом тексте, хотя этот текст является динамическим, и я не знаю, сколько раз появятся эти две подстроки.

Я сделал это: $between=substr($str, strpos($str, $1st) + 6, strpos($str, $2nd) - strpos($str, $1st) + 1);

но я даю только первую строку.

Как получить все строки, начинающиеся с $1st и заканчивающиеся $2nd в этом тексте?

Ответы [ 3 ]

1 голос
/ 04 ноября 2011

От: http://www.justin -cook.com / wp / 2006/03/31 / php-parse-a-string-меж-двумя строками /

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);
}

$fullstring = "this is my [tag]dog[/tag]";
$parsed = get_string_between($fullstring, "[tag]", "[/tag]");

echo $parsed; // (result = dog)
0 голосов
/ 08 сентября 2013

Использование:

<?php

$str = "...server daemon started with pid=6849 (parent=6848).";
$from = "pid=";
$to = "(";

echo getStringBetween($str,$from,$to);

function getStringBetween($str,$from,$to)
{
    $sub = substr($str, strpos($str,$from)+strlen($from),strlen($str));
    return substr($sub,0,strpos($sub,$to));
}

?>
0 голосов
/ 05 ноября 2011

Я просто изменяю ваш код и нахожу ответ. вот мой код:

$fullstr = "this is my [tag]dog[/tag].this is my [tag]this is my dog[/tag].this is my [tag]this is my dog[/tag]";
$start = "[tag]";
$end = "[/tag]";

    $first = substr_count($fullstr, $start);
    $second = substr_count($fullstr, $end);

    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);
    }


    $i=0;

    while($i<=$first)
    {
        $occur = strpos($fullstr, $val5, $i);
        echo $between = get_string_between($fullstr, $val7, $val5);

        $fullstr= substr($fullstr, $occur, 100000);

     $i++;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...