PHP – Как заменить фразу на другую?

Как я могу заменить этот <p><span class="headline"> этим <p class="headline"><span> проще всего с PHP.

 $data = file_get_contents("http://www.ihr-apotheker.de/cs1.html"); $clean1 = strstr($data, '<p>'); $str = preg_replace('#(<a.*>).*?(</a>)#', '$1$2', $clean1); $ausgabe = strip_tags($str, '<p>'); echo $ausgabe; 

Прежде чем я изменю html с сайта, я хочу получить объявление класса из диапазона в <p> .

Вы пытались использовать str_replace ?

Если размещение тегов <p> и <span> согласовано, вы можете просто заменить один на другой с помощью

 str_replace("replacement", "part to replace", $string); 

dont parse html с регулярным выражением! этот класс должен предоставить то, что вам нужно http://simplehtmldom.sourceforge.net/

Причина не анализировать HTML с регулярным выражением – это если вы не можете гарантировать формат . Если вы уже знаете формат строки, вам не нужно беспокоиться о наличии полного парсера.

В вашем случае, если вы знаете, что это формат, вы можете использовать str_replace

str_replace('<p><span class="headline">', '<p class="headline"><span>', $data);

Ну, ответ уже был принят, но во всяком случае, вот как это сделать с родным DOM:

 $dom = new DOMDocument; $dom->loadHTMLFile("http://www.ihr-apotheker.de/cs1.html"); $xPath = new DOMXpath($dom); // remove links but keep link text foreach($xPath->query('//a') as $link) { $link->parentNode->replaceChild( $dom->createTextNode($link->nodeValue), $link); } // switch classes foreach($xPath->query('//p/span[@class="headline"]') as $node) { $node->removeAttribute('class'); $node->parentNode->setAttribute('class', 'headline'); } echo $dom->saveHTML(); 

В боковом, HTML есть элементы для заголовков, поэтому почему бы не использовать элемент <h*> вместо использования семантически лишнего класса заголовка.