PHP String Заменить между двумя тегами HTML

0

Я пытаюсь заменить текст между двумя тегами в html-документе. Я хочу заменить любой текст, который не заключен в <и>. Я хочу использовать str_replace для этого.

php $string = '<html><h1> some text я want to replace</h1><p>some stuff я want to replace </p>';

$text_to_echo = str_replace("Bla","Da",$String);
echo $text_to_echo;
  • 0
    Я думаю, вам нужно Regex для достижения этой цели.
  • 1
    html лучше всего обрабатывать, анализируя его как XML. Некоторые вещи могут быть достигнуты с помощью регулярных выражений, но str_replace вообще не подходит для этой задачи.
Показать ещё 2 комментария
Теги:
string
str-replace

2 ответа

0
Лучший ответ

Попробуй это:

    <?php

$string = '<html><h1> some text i want to replace</h1><p>
    some stuff i want to replace </p>';
$text_to_echo =  preg_replace_callback(
    "/(<([^.]+)>)([^<]+)(<\\/\\2>)/s", 
    function($matches){
        /*
         * Indexes of array:
         *    0 - full tag
         *    1 - open tag, for example <h1>
         *    2 - tag name h1
         *    3 - content
         *    4 - closing tag
         */
        // print_r($matches);
        $text = str_replace(
           array("text", "want"), 
           array('TEXT', 'need'),
                $matches[3]
        );
        return $matches[1].$text.$matches[4];
    }, 
    $string
);
echo $text_to_echo;
  • 0
    Спасибо, был бы способ сделать это слово в слово. Например, заменить «текст» на «привет» и «хочу» на «торт»
  • 1
    Ответ обновлен, чтобы соответствовать этому.
Показать ещё 3 комментария
0

str_replace() не может справиться с этим

Вам понадобится regex или preg_replace для этого

Ещё вопросы

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