-1

我有这个案例:

<!-- [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] -->和之间获取 HTML 代码<!-- [STATIC STRING END] -->。并使其更简单......只需假设它之前和之后没有其他代码。我需要的是这两者之间的代码并将其作为 PHP 变量。

4

5 回答 5

1

试试正则表达式

staticstring(.*)staticstring
于 2012-10-24T07:41:25.917 回答
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;
}
于 2012-10-24T07:52:52.227 回答
0

我能想到的最接近您想要的是heredoc:

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

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

于 2012-10-24T07:41:48.250 回答
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;
?>
于 2012-10-24T07:53:57.507 回答
0

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

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

然后 $match['match'] 将拥有您的数据。

花了我几分钟的时间,

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

        )

)

附言。你应该能够

$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> 
        )

)
于 2014-07-04T06:58:53.893 回答