Как я могу удалить элемент HTML, и это - использование содержания RegEx

Я просто создал веб-приложение, которое сделает точно это - http://www.secretsantaswap.com/

, Мой алгоритм допускает подгруппы. Это не симпатично, но это работает.

Работает следующим образом:
1. присвойте уникальный идентификатор всем участникам, помните, какая подгруппа они находятся в
2. дубликат и перестановка, которые перечисляют (цели)
3. создайте массив числа участников каждой подгруппы
4. копируйте массив от [3] для целей
5. создайте новый массив для содержания финальных матчей
6. выполните итерации через участников, присваивающих первую цель, которая не соответствует ни одному из следующих критериев:
          A. участник == цель
          B. участник. Подгруппа == цель. Подгруппа
          C. выбор цели заставит подгруппу перестать работать в будущем (например, подгруппа 1 должна всегда иметь, по крайней мере, столько же неподгруппа 1 цель, остающаяся сколько подгруппа участников 1 участник, остающийся)
          D. участник (n+1) == цель (n +1)
, Если мы присваиваем цель мы также, постепенно уменьшает массивы от 3 и 4

Так, не симпатичный (вообще), но это работает. Надежда это помогает,

Dan Carlson

6
задан 11 July 2009 в 23:31
поделиться

3 ответа

Простой ответ - нет. Вместо этого вы используете один из многих HTML-парсеров PHP. Регулярные выражения - это ненадежный и подверженный ошибкам способ манипулирования HTML.

При этом вы можете сделать это:

$html = preg_replace('!<div\s+id="ithis"\s+class="cthis">.*?</div>!is', '', $html);

Но многие вещи могут быть неправильными. Например, если он содержит div:

<div id="ithis" class="cthis">Content here which <div>includes</div> other elements etc..) </div>

, вы получите:

 other elements etc..) </div>

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

. И нет ничего, что вы действительно можете сделать, чтобы решить эту проблему (с помощью регулярных выражений) последовательно.

Если использовать синтаксический анализатор, это выглядит примерно так:

$doc = new DOMDocument();
$doc->loadHTML($html);
$element = $doc->getElementById('ithis');
$element->parentNode->removeChild($element);
$html = $doc->saveHTML();
13
ответ дан 8 December 2019 в 17:26
поделиться

PHP - это серверная часть, и выходные данные поступают с сервера. Разве нельзя просто не выводить? Или вы пытаетесь это скрыть? В таком случае в таблице стилей просто скажите #ithis {display: none} .

Если строка является возвратом из какой-либо функции в PHP, которую вы не писали, и вы не хотите использовать этот код, вам нужно написать очень сложное регулярное выражение для учета вложенных div, изменяя синтаксис в вывод и т. д. I ' Я рекомендую использовать какой-нибудь анализатор (например, этот компонент Zend Framework ), чтобы помочь вам. Я использовал его несколько раз для чего-то подобного. Хотя, если вы совсем не знакомы с ZF, вы можете попробовать что-нибудь еще.

0
ответ дан 8 December 2019 в 17:26
поделиться

Я не знаю о PHP, но вы можете заменить / ] *> / ничем.

1
ответ дан 8 December 2019 в 17:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: