我有这个案子:
<!-- [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变量。
答案 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的strlen,strpos和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;
?>
答案 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>
)
)