Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как можно разрезать строки 
V
    Опции темы
Артем125
Дата 11.10.2009, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 2.9.2009

Репутация: нет
Всего: нет



Здравствуйте, у меня есть ключи массива $m[$mij]. Массив одномерный, print_r($m); дает следующее ниже

Код

Array ( [m00head742] => код [m01body1985] => 1  [m35row5head745] => [m40] => [m41col4cat224col4cat224] => [m44col4cat224col4cat224] => 
[m45col4cat224col4cat224row5head] => )
 


как можно вообще выцеплять из m41col4cat224col4cat224 например значение 41 после m или 4 между col и cat. Значения буквенные нам известны, выцеплять нужно цифры в промежутках

С помошью имени я передаю цифровое значение, по другому проблематично

можно как-то, пока не знаю с помошью функций strtok(), но там с версиями заморока, а надо точно, подскажите

Это сообщение отредактировал(а) Артем125 - 11.10.2009, 16:38
PM MAIL   Вверх
Ипатьев
Дата 11.10.2009, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



при чем здесь тогда массив, если задача - парсить строку, если я ее правильно понял
PM MAIL   Вверх
Артем125
Дата 11.10.2009, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 2.9.2009

Репутация: нет
Всего: нет



да да, ну про массив затем, что парсить надо точно, без осечек из-за версий ))))

Парсить строку, вытаскивая цифры между известными буквенными цначениями

Это сообщение отредактировал(а) Артем125 - 11.10.2009, 16:50
PM MAIL   Вверх
Ипатьев
Дата 11.10.2009, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



каких еще версий?

PM MAIL   Вверх
Артем125
Дата 11.10.2009, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 2.9.2009

Репутация: нет
Всего: нет



а как например с помощью регулярки из m41col4cat224col4cat224 вытащить 224, или 41

Код

вот например
$k = 'm41col4cat224col4cat224';

echo  'k='.$k.'<br>';

preg_match_all('/([a-z]+)([0-9]+)/', $k, $res);

print_r($res); 


Код

получилось это
Array ( [0] => Array ( [0] => m41 [1] => col4 [2] => 
cat224 [3] => col4 [4] => cat224 ) [1] => Array ( [0] => 
m [1] => col [2] => cat [3] => col [4] => cat ) [2] => 
Array ( [0] => 41 [1] => 4 [2] => 224 [3] => 4 [4] => 224 ) ) 


дальше функцией foreach ?


Это сообщение отредактировал(а) Артем125 - 11.10.2009, 17:26
PM MAIL   Вверх
capitan
Дата 11.10.2009, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 602
Регистрация: 27.2.2005
Где: Москва

Репутация: 9
Всего: 13



А такой вариант:
заносить в массив не m41col4cat224col4cat224 а m41:col4:cat224:col4:cat224
далее explode(":", $array); положение знаем, можно выбрать не перебором.
PM MAIL WWW ICQ   Вверх
Артем125
Дата 11.10.2009, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 2.9.2009

Репутация: нет
Всего: нет



вот код, мне подсказали, работает

Код

<?php
  // Получаем содержимое файла
  $code = 'm41col4cat224col4cat224';
  preg_match_all('/([a-z]+)([0-9]+)/', $code, $res);
  $result = array();
  if(!empty($res[1]))
  {
    for($i = 0; $i < count($res[1]); $i++)
    $result[$res[1][$i]] = $res[2][$i];
  }
  echo "<pre>";
  print_r($result);
  echo "<pre>";
?> 


Всем спасибо 

Это сообщение отредактировал(а) Артем125 - 11.10.2009, 17:39
PM MAIL   Вверх
Артем125
Дата 11.10.2009, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 2.9.2009

Репутация: нет
Всего: нет



и еще кое что в продолжении темы

Код

    $table = '';    
    // Формирование таблицы из массива
    for ($i = 0; $i < $kol_rows_table_new; $i++) 
    {    
        $table = $table.'<tr>';
        for ($j = 0; $j < $kol_сolumns_table_new; $j++) 
        {

                      Раньше кода индек массива был вида "m32", "m33" и т.д.  я его находил так
                       $mij = 'm'.$j.$i;

                      а теперь есть массив такого вида 
Array ( [m00head742] => [m01body1985] => 1 [m02body1986] =>   
[m03body1987] => 2 [m04body1988] => 3 
[m10head743] => [m11body1989] => ...[m31body1997] => 1500 [m32body1998] => 
1550 [m33body1999] => 1600 [m34body2000] => 1700 ) 

КАК мне получить индекс, значение для переменной $code, которая нижу, если foreach, то не знаю как увязать с моим циклом
        
        /*
        // Парсинг имени
        $code = 'm41col4cat224col4cat224';
  preg_match_all('/([a-z]+)([0-9]+)/', $code, $res);
  
  $result = array();
  if(!empty($res[1]))
  {
    for($i = 0; $i < count($res[1]); $i++)
    $result[$res[1][$i]] = $res[2][$i];
  }
  echo "<br>";
  echo $result['col'];
  echo "<br>"; 
*/        
            
            $value = '&nbsp;';
            if (isset($m[$mij])) $value = $m[$mij];
            $table = $table.'<td class="price_td"><input type="text" name="'

А здесь должно быть body1985, например и т.д. по циклу

'" size="10" maxlength="256" value="'.$value.'"></td>'."\n";
        
        }
        $table = $table.'</tr>';
    }


Это сообщение отредактировал(а) Артем125 - 11.10.2009, 18:55
PM MAIL   Вверх
Артем125
Дата 11.10.2009, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 2.9.2009

Репутация: нет
Всего: нет



вот как то так, только зависает ((

Код

    $table = '';    
    // Формирование таблицы из массива
    for ($i = 0; $i < $kol_rows_table_new; $i++) 
    {    
        $table = $table.'<tr>';
        for ($j = 0; $j < $kol_сolumns_table_new; $j++) 
        {    
            foreach ($m  as $key => $v)
            {
                preg_match_all('/([a-z]+)([0-9]+)/', $key, $res);
                $result = array();
                if(!empty($res[1]))
                {
                    for($i = 0; $i < count($res[1]); $i++)
                    $result[$res[1][$i]] = $res[2][$i];
                }
                if ($result['m'] == strval($j.$i))
                {
                    $mij = $key;
                    $val = $v;
                }
            
            }
            
            $value = '&nbsp;';
            if (isset($m[$mij])) $value = $val;
            $table = $table.'<td class="price_td"><input type="text" name="5" size="10" maxlength="256" value="'.$value.'"></td>'."\n";
        
        }
        $table = $table.'</tr>';
    }

PM MAIL   Вверх
brother79
Дата 29.10.2009, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 471
Регистрация: 18.8.2009

Репутация: 2
Всего: 6



Цитата(Артем125 @  11.10.2009,  17:08 Найти цитируемый пост)
а как например с помощью регулярки из m41col4cat224col4cat224 вытащить 224, или 41



Код

$s = 'm41col4cat224col4cat224';

if (preg_match('/^m(\d+)col(\d+)cat(\d+)col(\d+)cat(\d+)$/', $s, $m)) {

  print_r($m);

}



--------------------
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0738 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.