Приведенный выше код работает нормально:PHP - С помощью preg_replace с file_get_contents
<?php
function clearPage($content, $class) {
$arr = array(
'@^(.*?)<div class="'.$class.'">(.*?)</div>(.*?)[email protected]' => '<div class="'.$class.'">$2</div>'
);
return preg_replace(array_keys($arr), array_values($arr), $content);
}
$class = "something";
$content = "31xu1823y8<div class="something">Wanted</div>912u38u3"
$result = clearPage($content, $class);
echo $result;
?>
Это выходы:
<div class="something">Wanted</div>
Но я хочу, чтобы сделать переменную содержание, быть HTML-код со страницы сайта , Поэтому я меняю последний код на что-то вроде:
$class = "something";
$content = file_get_contents('index.php');
$result = clearPage($content, $class);
echo $result;
This outputs all the webpage! Why!?
Я предполагаю, что вы найдете ответ в этом вопросе SO -> Http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags – adeneo
И да, если вы читаете из 'input.php', вы не получите отображаемый HTML, а PHP источник с только фрагментами HTML. (Проблема с регулярным выражением: флаг DOTALL.) – mario