Найти и заменить строку в HTML с помощью PHP DOM Parser

1

Как найти и заменить строку на странице html с помощью собственного PHP DOM Parser?

Пример строки, чтобы найти: "the <a href='site.com'>company</a> has been growing for the past 5 months";

Родитель - это полная HTML-страница, например, ближайшая предшественница этой строки может быть <div> или <p>.

Для этого элемента нет или класса. Можно ли все-таки найти и манипулировать им?

Нет ничего, чтобы идентифицировать строку или ее непосредственный предшественник. Только точная строка, то есть последовательность символов, из которой состоит $ search_string.

Благодарю!

РЕДАКТИРОВАТЬ:

$ string_to_replace = "the <a href='site.com'>company</a> has been growing for the past 5 months";

$ replacement_string = "<span class='someClass'>the <a href='site.com'>company</a> has been growing for the past 5 months";</span>

  • 0
    Какую строку вы хотите заменить чем?
  • 0
    В приведенном выше примере вы ищете не содержимое элемента DOM, а текстовую строку. Если вы хотите изменить <a href ... </a> вы можете использовать PHP DOM, но не искать "the <a href='site.com'>company</a> has been growing for the past 5 months" . Используйте поиск / замену строки для этого или регулярное выражение поиска / замены
Показать ещё 1 комментарий
Теги:
parsing
simple-html-dom
domparser

1 ответ

1

Поскольку это, похоже, охватывает часть узла с дочерними узлами, я бы использовал замену следующим образом:

// Text in $html
$find  = "the <a href='site.com'>company</a> has been growing for the past 5 months";
$find_len = strlen( $find );
$start = strpos( $html, $find );
if ( $start !== false ) {
    $html = substr( $html, 0, $start )
        . '<span class="someClass">' . $find . '</span>'
        . substr( $html, $start + $find_len );
}

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

PHP DOM отлично подходит для изменения атрибута href элемента a или его содержимого (компании). Он также должен работать, если $ find - это полное содержимое <div> -element

Ещё вопросы

Сообщество Overcoder
Наверх
Меню