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

<!-- [STATIC STRING] -->この PHP から、 と の間でHTML コードを取得する方法がわかりません<!-- [STATIC STRING END] -->。簡単にするために...その前後に他のコードがないと仮定してください。私が必要とするのは、これら 2 つの間のコードであり、それを PHP 変数として配置します。

4

5 に答える 5

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 に答える
1

正規表現を試してください

staticstring(.*)staticstring
于 2012-10-24T07:41:25.917 に答える
0

あなたが望むものに私が考えることができる最も近いのはヒアドキュメントです:

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

たとえばスクリーンスクレーパーなどで後で使用するために何かを html に埋め込みたい場合は、必要な html を参照できる ID を持つ div に埋め込んでみませんか。

于 2012-10-24T07:41:48.250 に答える
0

PHP を初めて使用する場合は、PHP サンプル コードのstrlenstrpos、およびsubstr関数を確認する必要があります。

<?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

        )

)

ps。あなたはできるはずです

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

外側のスペースをすべて削除します。

個人的には、このようなタグを付けます。

<!-- { 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 に答える