[PHP] массивы. нужна идея

И всё прочее, что касается HTML
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35462
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

[PHP] массивы. нужна идея

Непрочитанное сообщение Alex Keda » 2008-11-29 0:03:02

как делаю щас.
есть кусок HTML кода в отдельном файле, типа

Код: Выделить всё

hosting$ more file.tpl

<tr>
 <td><!-- value1 --></td>
</tr>
<tr>
 <td><!-- value2 --></td>
</tr>
создаём первый массив, типа

Код: Выделить всё

$arr_search = array();
$arr_search[] = "<!-- value1 -->";
$arr_search[] = "<!-- value2 -->";
второй массив

Код: Выделить всё

$arr_replace = array();
$arr_replace[] = "ceil 1";
$arr_replace[] = "ceil2";
считываем файл в переменную $file
==========
теперь делаем комбинацию:

Код: Выделить всё

echo str_replace($arr_search, $arr_replace, $file);
на выходе получим:

Код: Выделить всё

<tr>
 <td>ceil 1</td>
</tr>
<tr>
 <td>ceil2</td>
</tr>
==============
собсно проблема. необходимо следить за последовательностью заполнения массивов.
если поменять строки местами:

Код: Выделить всё

$arr_replace = array();
$arr_replace[] = "ceil2";
$arr_replace[] = "ceil 1";
результат будет иным.
на больших массивах в несколько десятков позиций становиться тяжело....
как бы сделать чтоб не следить?
Убей их всех! Бог потом рассортирует...

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: [PHP] массивы. нужна идея

Непрочитанное сообщение hizel » 2008-11-29 0:07:40

эм, у вас там в пыхе хэши( в терминах perl-а) присутствуют?

Код: Выделить всё

$a{'value 1'} = 'ceil 1'
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35462
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: [PHP] массивы. нужна идея

Непрочитанное сообщение Alex Keda » 2008-11-29 0:17:38

незнаю, да и идея непонятна....
Убей их всех! Бог потом рассортирует...

lerryc
сержант
Сообщения: 191
Зарегистрирован: 2008-07-10 7:28:37
Откуда: Vladivostok

Re: [PHP] массивы. нужна идея

Непрочитанное сообщение lerryc » 2008-11-29 13:48:38

lissyara писал(а):незнаю, да и идея непонятна....
Лисс, это шутка была?
что-то не догнал ;(
Ты же делал подобное вроде недавно? (месяц-два назад)
хеш-массив, зачем два массива? (в первом посте)
или все-таки новогдняя шутка?
машина думать не может, машина должна ехать

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35462
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: [PHP] массивы. нужна идея

Непрочитанное сообщение Alex Keda » 2008-11-29 22:28:17

неа.
видать возрастное - начинаю всё забывать.
=========
объясните чтолли идею....
Убей их всех! Бог потом рассортирует...

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: [PHP] массивы. нужна идея

Непрочитанное сообщение zg » 2008-11-29 22:36:02

hizel писал(а):эм, у вас там в пыхе хэши( в терминах perl-а) присутствуют?
ага, и даже функция, которая по хешу замену делает в сотни раз эффективней str_replace

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35462
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: [PHP] массивы. нужна идея

Непрочитанное сообщение Alex Keda » 2008-11-29 22:48:06

э... поделитесь знанием, люди...
Убей их всех! Бог потом рассортирует...

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: [PHP] массивы. нужна идея

Непрочитанное сообщение zg » 2008-11-29 22:54:22

lissyara писал(а):э... поделитесь знанием, люди...
дык вроде дывным давно делился
http://anton-pribora.ru/articles/php-sendmail/index.php

Код: Выделить всё

/**
 * Экранирование опасных символов html
 *
 * @param string $html
 * @return string
 */
function hEscape($html)
{
    return strtr
    (
        $html, 
        array
        (
            '&'  => '&' , 
            '"'  => '"', 
            '\'' => ''', 
            '<'  => '<'  , 
            '>'  => '>'
        )
    );
}
простой пример эффективной замены

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35462
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: [PHP] массивы. нужна идея

Непрочитанное сообщение Alex Keda » 2008-11-29 22:57:13

ага. понял.
вопрос отслеживания общего числа необходимых замен так и остаётся открытым.. =(((
то что не заменилось - останется в коде...
ну да ладно - идеала нет.
Убей их всех! Бог потом рассортирует...

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: [PHP] массивы. нужна идея

Непрочитанное сообщение zg » 2008-11-29 23:10:34

lissyara писал(а):вопрос отслеживания общего числа необходимых замен так и остаётся открытым.. =(((
какие проблемы? есть же ещё более эффективная функция - preg_replace_callback() как хочешь, так и заменяй

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35462
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: [PHP] массивы. нужна идея

Непрочитанное сообщение Alex Keda » 2008-11-29 23:30:21

zg писал(а):
lissyara писал(а):вопрос отслеживания общего числа необходимых замен так и остаётся открытым.. =(((
какие проблемы? есть же ещё более эффективная функция - preg_replace_callback() как хочешь, так и заменяй
снова непонял
Убей их всех! Бог потом рассортирует...

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: [PHP] массивы. нужна идея

Непрочитанное сообщение zg » 2008-11-29 23:49:18

lissyara писал(а):снова непонял

Код: Выделить всё

<?

$replace = array(
	'var1' => 'Some var uno' ,
	'var2' => 'Some var duet',
);

$wrongVars = array();


function myReplace($arr)
{
	global $replace, $wrongVars;
	$varName = $arr[1];
	
	if ( isset($replace[ $varName ]) ) return $replace[ $varName ];
	
	$wrongVars[] = $varName;
	
	return $arr[0];
}


$text = '<b><!--var1--></b><b><!--var2--></b><b><!--var3--></b>';

echo preg_replace_callback('~<!--\s*(\w+)\s*-->~', 'myReplace', $text), PHP_EOL;

print_r($wrongVars);

?>
======= Результат =======
<b>Some var uno</b><b>Some var duet</b><b><!--var3--></b>
Array
(
    [0] => var3
)
примерно так