За последние 24 часа нас посетили 17230 программистов и 1222 робота. Сейчас ищут 1464 программиста ...

Не сохранять первый элемент массива

Тема в разделе "Регулярные выражения", создана пользователем Bagir, 23 ноя 2007.

  1. Bagir

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

    С нами с:
    4 июл 2007
    Сообщения:
    40
    Симпатии:
    0
    PHP:
    1. $str = "INSERT INTO blog SET main = text dddd RRR !@#$%^&\+*()<>";
    2. preg_match("/INSERT INTO ([^\s]+) SET ([^\s]+) = (.+)*/", $str, $out);
    на выходе получаю

    PHP:
    1. array(4) {
    2.   [0]=>
    3.   string(56) "INSERT INTO blog SET main = text dddd RRR !@#$%^&\+*()<>"
    4.   [1]=>
    5.   string(4) "blog"
    6.   [2]=>
    7.   string(4) "main"
    8.   [3]=>
    9.   string(28) "text dddd RRR !@#$%^&\+*()<>"
    10. }
    как мне не сохранять нулевой элемент массива, тоесть не вгонять весь стринг $str? а оставить только 1,2,3 элементы
     
  2. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    «не вгонять» куда?
    разве доступ к элементам массива по индексам уже запретили?
     
  3. Bagir

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

    С нами с:
    4 июл 2007
    Сообщения:
    40
    Симпатии:
    0
    я нехочу добовлять лишний элемент в массив. а имменно [0]=> string(56) "INSERT INTO blog SET main = text dddd RRR !@#$%^&\+*()<>"
     
  4. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Код (Text):
    1. preg_match('...', $str, $out, PREG_SET_ORDER)
     
  5. Bagir

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

    С нами с:
    4 июл 2007
    Сообщения:
    40
    Симпатии:
    0
    Sergey89 не помогло
    и еще одна проблема (.+)* вытаскивает только одну строку с новой строки нечего не берет
     
  6. Bagir

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

    С нами с:
    4 июл 2007
    Сообщения:
    40
    Симпатии:
    0
    вообщем савсем запутался, есть такой текст
    HTML:
    1. INSERT INTO blog SET main =   <table width="100%" border="0" cellspacing="0" cellpadding="0">
    2.     <tr>
    3.       <td height="266" align="left" valign="top"><table width="100%" border="0" cellspacing="0" cellpadding="0">
    4.      other html code
    5.       </td>
    6.    </tr>
    надо вытащить
    слово после INTO (в данном случае blog)
    слово после SET (в данном случае main)
    и весб хтмл после main = (хтм все время меняетса)

    помогите пожалусто
     
  7. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Код (Text):
    1. /INSERT\s+INTO\s+(.*)\s+SET\s+(.*)\s+=\s+(.*)/Usi
     
  8. Bagir

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

    С нами с:
    4 июл 2007
    Сообщения:
    40
    Симпатии:
    0
    Sergey89 приходит все кроме хтмл
    PHP:
    1. array(4) {
    2.   [0]=>
    3.   string(28) "INSERT INTO blog SET main = "
    4.   [1]=>
    5.   string(4) "blog"
    6.   [2]=>
    7.   string(4) "main"
    8.   [3]=>
    9.   string(0) ""
    10. }
    проверял переменную $str вней есть хтмл
     
  9. simpson

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

    С нами с:
    11 фев 2006
    Сообщения:
    1.650
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    PHP:
    1. preg_match('~INSERT\s+INTO\s+(\S+)\s+SET\s+(\S+)\s*=\s*(.*)~si', $str, $match);
    2. array_shift($match);
    3. print_r($match);
    Код (Text):
    1. Array
    2. (
    3.     [0] => blog
    4.     [1] => main
    5.     [2] => <table width="100%" border="0" cellspacing="0" cellpadding="0">
    6.       <tr>
    7.         <td height="266" align="left" valign="top"><table width="100%" border="0" cellspacing="0" cellpadding="0">
    8.       other html code
    9.         </td>
    10.     </tr>
    11. )
    :)
     
  10. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Код (Text):
    1. \s*=\s*