За последние 24 часа нас посетили 16479 программистов и 1677 роботов. Сейчас ищут 886 программистов ...

Как из "<td>i</td><td>i</td>" сделать "<td>1</td><td>2</td>"

Тема в разделе "PHP для новичков", создана пользователем Lexer, 27 янв 2016.

  1. Lexer

    Lexer Активный пользователь

    С нами с:
    5 авг 2014
    Сообщения:
    25
    Симпатии:
    1
    Код (PHP):
    1. <?php
    2. //На входе данные следующего упрощённого вида.
    3.     $val = '
    4.         <tr>
    5.             <td></td>
    6.         </tr>
    7.         <tr>
    8.             <td></td>
    9.         </tr>
    10.     ';
    11.  
    12.     //Как на выходе получить?
    13.     $new_val = '
    14.         <tr>
    15.             <td>1</td>
    16.         </tr>
    17.         <tr>
    18.             <td>2</td>
    19.         </tr>
    20.     ';
    21.  
    22.     $pattern = '/()/';
    23.     //print str_replace('', ++$i, $val, 1).'<hr>'; //закоментировал, т.к. умирает.
    24.     print str_replace('', ++$i, $val).'<hr>'; //понятное дело, что заменяет все  на 1,1,1..., а надо на 1,2,3..
    25.     //print preg_replace($re, $replacement, $val, 1, 1).'<hr>'; //закоментировал, т.к. умирает.
    26.     print preg_replace($re, $replacement, $val).'<hr>'; //понятное дело, что заменяет все  на 1,1,1..., а надо на 1,2,3..
    27. ?>
    Хотел циклом запустить str_replace('<!--i-->', ++$i, $val, 1), чтобы каждый раз был i больше, но php умирает.

    PHP Version 5.2.4 Denwer
     
  2. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    Re: Как из "<td>i</td><td>i</td>" сделать "<td>1</td><td>2</

    Часть символ регулярки нужно экранировать, возможно из за этого PHP умирает :)
     
  3. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Re: Как из "<td>i</td><td>i</td>" сделать "<td>1</td><td>2</

    viewtopic.php?f=36&t=56231 - почитайте топик, там несколько красивых решений и обсуждение процесса
     
  4. Lexer

    Lexer Активный пользователь

    С нами с:
    5 авг 2014
    Сообщения:
    25
    Симпатии:
    1
    Re: Как из "<td>i</td><td>i</td>" сделать "<td>1</td><td>2</

    Спасибо mkramer! Использовать preg_replace_callback я тоже пробовал и тоже самое PHP умирал. Решил, что это как-то странно всё. Пошёл на denwer.ru, скачал новую версию, где PHP 5.3.13, и preg_replace_callback заработал. str_replace() с указанием максимального кол-ва замен всё равно умирает. Но проблема решена благодаря preg_replace_callback.
     
  5. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Re: Как из "<td>i</td><td>i</td>" сделать "<td>1</td><td>2</

    текущая версия php - 7.0, если что...