У меня есть html-файл, index.php Я хочу взять содержимое в <div> с main классом этого файла и заменить его другим текстом.  Как я могу это достичь? 
Пример содержимого в html:
 <div class="main"> Replace this text with some code! </div> 
Я хочу получить содержимое в этом div с помощью php и заменить его другим контентом. Но я не знаю, как это сделать.
Обновление: я знаю, что клиентский трюк с javascript. Я хочу сделать эту серверную часть. И файл будет html, а не php. поэтому я думаю, что мне нужно открыть html в php и сделать это, хотя я точно не знаю.
Можно ли это сделать с помощью парсера xpath или html dom или что-то еще? Поиск Google дал мне эти условия, но я понятия не имею, что они на самом деле.
Для этого вы можете использовать классы / функции PHP DOM .
Начните с создания / загрузки документа:
 $d = new DOMDocument(); $d->loadHTML($yourWellFormedHTMLString); 
Затем вам захочется найти узел документа, который вы хотите изменить. Вы можете сделать это с помощью XPath:
 $xpathsearch = new DOMXPath($d); $nodes = $xpathsearch->query('//div[contains(@class,'main')]'); 
Затем вы захотите перебрать соответствующие узлы и создать новые узлы внутри:
 foreach($nodes as $node) { $newnode = $d->createDocumentFragment(); $newnode->appendXML($yourCodeYouWantToFillIn); $node->appendChild($newnode); } 
Если вы не против возиться с библиотекой на ранней стадии разработки, взгляните на CAST (шаблоны стилей, ориентированные на контент). Это в значительной степени предназначено для того, чтобы делать то, что вы описываете, и, если ничего другого, вы могли бы заглянуть внутрь источника, чтобы увидеть примеры.
  (ПРИМЕЧАНИЕ. Я уверен, что проницательный заметит, что //div[contains(@class,'main')] не является точно эквивалентом селектора CSS div.main … поскольку атрибут класса может содержать больше, чем один класс. Выполнение этого точно достаточно громоздко, я думаю, что лучше начать с упрощенного выражения, когда вы вводите в него людей, даже если это может быть лучше для тех, кто идет по этому маршруту, чтобы в конечном итоге узнать xpath достаточно хорошо, чтобы справиться с этим или просто используйте ids больше вместо классов. 🙂 
Если нужно просто включить статический фрагмент
 <div class="main"> <?php readfile ('path/to/some/file'); ?> </div> 
Если ему нужно включить вывод другого скрипта PHP
 <div class="main"> <?php include ('path/to/some/file') ?> </div> 
Вы читаете файл:
 $fileContents=file_get_contents($file_path); 
http://php.net/manual/en/function.file-get-contents.php
Затем вы выполняете поиск и замену содержимого div:
 $newHtmlContent=preg_replace("/<div class=\"main\">(.*)</div>/i",'<div class="main">Some text here</div>',$fileContents); 
http://php.net/manual/en/function.preg-replace.php
Мое регулярное выражение немного ржавое, но вы можете его зачерпнуть здесь: http://www.regular-expressions.info/tutorial.html
Затем сохраните новый контент:
 file_put_contents($file_path,$newHtmlContent); 
http://www.php.net/manual/en/function.file-put-contents.php
Или вы можете проанализировать файл, используя это: http://simplehtmldom.sourceforge.net/ Но он должен быть хорошо сформирован.
Я бы порекомендовал эту версию, потому что вышеописанное не сработает, если основной элемент div – другой div …