откройте файл и удалите первый тег - PullRequest
1 голос
/ 03 апреля 2012

Это будет HTML-файл:

<li class="msgln">hello</li><li class="msgln">hi</li><li class="msgln">hey</li>

И php-скрипт:

$fp = fopen("file.html", 'a');
....
fclose($fp);

Как удалить сначала <li class="msgln">hello</li>?

Содержимое в <li> динамически изменяется

Ответы [ 5 ]

2 голосов
/ 03 апреля 2012

Это будет работать, даже если первый li будет содержать другие вложенные li s:

<?php
$doc = new DOMDocument();
$doc->loadHTML('<li class="msgln">hello</li><li class="msgln">hi</li><li class="msgln">hey</li>
');

$root = $doc->documentElement;
$p = $doc->documentElement->childNodes->item(0)->childNodes;
$li = $doc->getElementsByTagName('li')->item(0);
$li->parentNode->removeChild($li);

$html = '';
foreach ($root->childNodes->item(0)->childNodes as $child) {
    $html .= $doc->saveXML($child);
}
echo $html;

?>

с использованием регулярное выражение может привести к неожиданным результатам.

1 голос
/ 03 апреля 2012
$fp = fopen("file.html", 'a');
$content = fread($fp);
$text = preg_replace( "/<li.+?>.+?<\/li>/is", "", $content, 1 );
fclose($fp);
1 голос
/ 03 апреля 2012

Вы можете использовать preg_replace для достижения этой цели:

$html = file_get_contents('file.html');
$html = preg_replace('#^<li[^>]*>[^<]+</li>#i', '', $html); 
1 голос
/ 03 апреля 2012

Если содержимое файла в точности соответствует описанию, вы можете использовать strip_tags (), например:

$fp = fopen("file.html", 'a');
$content = fread($fp);
$content = strip_tags($content);
fclose($fp);

В качестве альтернативы вы можете использовать регулярные выражения, но это будет медленнее.

0 голосов
/ 03 апреля 2012

попробуйте это (без регулярных выражений)

//string contains the file value
$string = '<li class="msgln">hello</li><li class="msgln">hi</li><li class="msgln">hey</li>';

$tag = '</li>';

$lis = explode($tag, $string);

if(count($lis) > 0) {
    unset($lis[0]);
    $string = implode($tag, $lis);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...