在每个字符串之间

时间:2016-02-19 05:18:29

标签: php regex preg-match-all

下面是一个函数,可以获得一个包含两个其他字符串的字符串,没有问题,

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

假设我有这样的代码:

<code>Sample one</code>
<code>Sample two</code>
<code>Sample three</code>

使用GetBetween($content,'<code>',</code>')时,不会返回array("Sample one","Sample two","Sample three")之类的内容,而只会返回第一个“Sample 1” 我怎样才能让它在我指定的两件事之间返回一切?如果我能得到一个没有用“”标签硬编码的解决方案,我将不胜感激,因为我将需要这个用于许多不同的事情。

3 个答案:

答案 0 :(得分:4)

首先,regex不是解析HTML/XML的正确工具,而是可以像{/ p>一样使用DOMDocument

$xml = "<code>Sample one</code><code>Sample two</code><code>Sample three</code>";

$dom = new DOMDocument;
$dom->loadHTMl($xml);
$root = $dom->documentElement;
$code_data = $root->getElementsByTagName('code');
$code_arr = array();
foreach ($code_data as $key => $value) {
    $code_arr[] = $value->nodeValue;
}
print_r($code_arr);

<强>输出:

Array
(
    [0] => Sample one
    [1] => Sample two
    [2] => Sample three
)

答案 1 :(得分:1)

我必须使用这样的功能,所以我把它放在手边:


directrtpsetup=yes

除此之外,您需要开始使用DomDocument

答案 2 :(得分:1)

猜猜你可以尝试这样的事情,

In addition to answer by Ferrybig, can you try this:

WebElement scroll = driver.findElement(By.xpath("//div[@id='gvLocationHorizontalRail']"));
JavascriptExecutor js = (JavascriptExecutor)driver; 
js.executeScript(
driver.execute_script("arguments[0].scrollIntoView()", scroll);