Страница 1 из 1
[PHP] массивы. нужна идея
Добавлено: 2008-11-29 0:03:02
Alex Keda
как делаю щас.
есть кусок 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";
результат будет иным.
на больших массивах в несколько десятков позиций становиться тяжело....
как бы сделать чтоб не следить?
Re: [PHP] массивы. нужна идея
Добавлено: 2008-11-29 0:07:40
hizel
эм, у вас там в пыхе хэши( в терминах perl-а) присутствуют?
Re: [PHP] массивы. нужна идея
Добавлено: 2008-11-29 0:17:38
Alex Keda
незнаю, да и идея непонятна....
Re: [PHP] массивы. нужна идея
Добавлено: 2008-11-29 13:48:38
lerryc
lissyara писал(а):незнаю, да и идея непонятна....
Лисс, это шутка была?
что-то не догнал ;(
Ты же делал подобное вроде недавно? (месяц-два назад)
хеш-массив, зачем два массива? (в первом посте)
или все-таки новогдняя шутка?
Re: [PHP] массивы. нужна идея
Добавлено: 2008-11-29 22:28:17
Alex Keda
неа.
видать возрастное - начинаю всё забывать.
=========
объясните чтолли идею....
Re: [PHP] массивы. нужна идея
Добавлено: 2008-11-29 22:36:02
zg
hizel писал(а):эм, у вас там в пыхе хэши( в терминах perl-а) присутствуют?
ага, и даже функция, которая по хешу замену делает в сотни раз эффективней str_replace
Re: [PHP] массивы. нужна идея
Добавлено: 2008-11-29 22:48:06
Alex Keda
э... поделитесь знанием, люди...
Re: [PHP] массивы. нужна идея
Добавлено: 2008-11-29 22:54:22
zg
lissyara писал(а):э... поделитесь знанием, люди...
дык вроде дывным давно делился
http://anton-pribora.ru/articles/php-sendmail/index.php Код: Выделить всё
/**
* Экранирование опасных символов html
*
* @param string $html
* @return string
*/
function hEscape($html)
{
return strtr
(
$html,
array
(
'&' => '&' ,
'"' => '"',
'\'' => ''',
'<' => '<' ,
'>' => '>'
)
);
}
простой пример эффективной замены
Re: [PHP] массивы. нужна идея
Добавлено: 2008-11-29 22:57:13
Alex Keda
ага. понял.
вопрос отслеживания общего числа необходимых замен так и остаётся открытым.. =(((
то что не заменилось - останется в коде...
ну да ладно - идеала нет.
Re: [PHP] массивы. нужна идея
Добавлено: 2008-11-29 23:10:34
zg
lissyara писал(а):вопрос отслеживания общего числа необходимых замен так и остаётся открытым.. =(((
какие проблемы? есть же ещё более эффективная функция -
preg_replace_callback() как хочешь, так и заменяй
Re: [PHP] массивы. нужна идея
Добавлено: 2008-11-29 23:30:21
Alex Keda
zg писал(а):lissyara писал(а):вопрос отслеживания общего числа необходимых замен так и остаётся открытым.. =(((
какие проблемы? есть же ещё более эффективная функция -
preg_replace_callback() как хочешь, так и заменяй
снова непонял
Re: [PHP] массивы. нужна идея
Добавлено: 2008-11-29 23:49:18
zg
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
)
примерно так