PHP:如何在2个静态字符串之间获取字符串?

时间:2012-10-24 07:38:57

标签: php

我有这个案子:

<!-- [STATIC STRING] -->
Some HTML codes here
<!-- [STATIC STRING END] -->

如何在PHP中获取STATIC STRING和STATIC STRING END之间的任何代码?是否有可能在这样的条件之间得到一些东西:

<!-- [STATIC STRING] -->
Some HTML codes here
<!-- [STATIC STRING] -->

我只需要在某些东西之间插入一些字符串,以后我可以使用PHP操作它。知道如何提高效率吗?

更新:假设HTML代码存储为file.html,另一方面我有这个PHP脚本:

$Filename = 'file.html';
$Handle = fopen($Filename, "r");
$Contents = fread($Handle, filesize($Filename));
fclose($Handle);

从这个PHP,我不知道如何在<!-- [STATIC STRING] --><!-- [STATIC STRING END] -->之间获取HTML代码。并使其更简单...只是假设它之前和之后没有其他代码。我需要的是这两者之间的代码并将其作为PHP变量。

5 个答案:

答案 0 :(得分:1)

尝试regx

staticstring(.*)staticstring

答案 1 :(得分:1)

使用此方法从字符串中提取数据

function extractor($str,$from,$to)
{
    $from_pos = strpos($str,$from);
    $from_pos = $from_pos + strlen($from);
    $to_pos   = strpos($str,$to,$from_pos);// to must be after from
    $return   = substr($str,$from_pos,$to_pos-$from_pos);
    unset($str,$from,$to,$from_pos,$to_pos );           
    return $return;
}

答案 2 :(得分:0)

我能想到的最接近你想要的是一个heredoc:

public $myHTML = <<<EOT
<div>bar</div>
EOT;

如果您只想在html中嵌入某些内容以供日后使用,例如屏幕抓取器等,那么为什么不将您想要的html嵌入到具有您可以引用的ID的div中。

答案 3 :(得分:0)

如果您不熟悉PHP,则需要检查PHP的strlenstrpossubstr函数 示例代码:

<?php
    $str = "[STATIC STRING]
        Some HTML codes here
        [STATIC STRING END]";
    $answer = $str;
    $start_text = "[STATIC STRING]";
    $end_text = "[STATIC STRING END]";
    $start_index = strpos($answer,$start_text)+strlen($start_text);
    $answer = substr($answer,$start_index);

    $end_index = strpos($answer,$end_text);
    $answer = substr($answer,0,$end_index);

    echo $answer;
?>

答案 4 :(得分:0)

试试这个,因为它适用于文件中的多个标签,(不会覆盖嵌套标签)

preg_match_all('<!--\s\[STATIC\sSTRING\]\s-->(?P<match>(?:(?!<!--\s\[STATIC\sSTRING\sEND\]\s-->).)*)<!--\s\[STATIC\sSTRING\sEND\]\s-->', $string, $match);

然后$ match [&#39;匹配&#39;]将拥有您的数据。

在这个问题上花了我几分钟,

Array
(
    [0] => Array
        (
            [0] => <!-- [STATIC STRING] -->
Some HTML codes here
<!-- [STATIC STRING END] -->
        )

    [match] => Array
        (
            [0] => 
Some HTML codes here

        )

    [1] => Array
        (
            [0] => 
Some HTML codes here

        )

)

PS。你应该能够

$arr = array_map('trim', $match['match']);

并删除所有外部空间。

个人ID带有这样的标签,

<!-- { html content } -->

更容易匹配。

$string = '<!-- { STATIC STRING } -->
<b> hello</b>
<!-- { <strong>Other STATIC STRING</strong> } -->';

preg_match_all('/<!--\s\{(?P<match>(?:(?!\}\s-->).)*)\}\s-->/', $string, $match);

输出

Array
(
    [0] => Array
        (
            [0] => <!-- { STATIC STRING } -->
            [1] => <!-- { <strong>Other STATIC STRING</strong> } -->
        )

    [match] => Array
        (
            [0] =>  STATIC STRING 
            [1] =>  <strong>Other STATIC STRING</strong> 
        )

    [1] => Array
        (
            [0] =>  STATIC STRING 
            [1] =>  <strong>Other STATIC STRING</strong> 
        )

)