|
|
|
| Необходимо осуществить замену всех PHP вставок в HTML файле. Тоесть допустим имеется такой файл:
<html>
<head>
<title><? defined("PAGE_TITLE") ? print PAGE_TITLE : print "Заголовок"; ?></title>
<link rel="stylesheet" type="text/css" media="all" href="<?=MAIN_URL?>/style/style.css">
</head>
<body>
<img src="<?=MAIN_URL?>/style/images/logo.png">
<!--Навигационное меню-->
<?include MAIN_PATH."/blocks/menu.php"?>
<!--/Навигационное меню-->
<body>
</html>
|
Надо получить такой:
<html>
<head>
<title>%PHP:1%</title>
<link rel="stylesheet" type="text/css" media="all" href="%PHP:2%/style/style.css">
</head>
<body>
<img src="%PHP:3%/style/images/logo.png">
<!--Навигационное меню-->
%PHP:4%
<!--/Навигационное меню-->
<body>
</html>
|
При этом запомнить соотвествующую вставку в массив. | |
|
|
|
|
|
|
|
для: Sergey89
(23.02.2006 в 13:42)
| | А для чего это потребовалось? Может есть обходной путь... | |
|
|
|
|
|
|
|
для: cheops
(23.02.2006 в 14:09)
| | Я пишу CMS и хочу в админке встроить функцию редактирования шапки и подвала сайта. При этом надо избвится от РНР кода, для того чтобы не подготовленный пользователь не запутался. Но после редактирования при сохранении необходимо обратно вернуть РНР код в файлы. | |
|
|
|
|
|
|
|
для: Sergey89
(23.02.2006 в 15:07)
| | Что-то типа такого подойдёт?
<?php
$str='<html>
<head>
<title><? defined("PAGE_TITLE") ? print PAGE_TITLE : print "Заголовок"; ?></title>
<link rel="stylesheet" type="text/css" media="all" href="<?=MAIN_URL?>/style/style.css">
</head>
<body>
<img src="<?=MAIN_URL?>/style/images/logo.png">
<!--Навигационное меню-->
<?include MAIN_PATH."/blocks/menu.php"?>
<!--/Навигационное меню-->
<body>
</html>';
$pattern="|<\?([^>]*)\?>|isU";
preg_match_all($pattern,$str,$out);
foreach($out[1] as $key=>$item){
$str = str_replace("<?".$item."?>","%PHP:".$key."%",$str);
}
echo htmlentities($str);
?>
|
| |
|
|
|
|
|
|
|
для: Axxil
(23.02.2006 в 17:54)
| | Вот блин... большое спасибо! Я и забыл про str_replace =) | |
|
|
|
|
|
|
|
для: Sergey89
(23.02.2006 в 18:43)
| | Возник ещё один вопрос. Как сделать так, чтобы str_replace заменял только первое попавшееся совпадение. | |
|
|
|
|
|
|
|
для: Sergey89
(23.02.2006 в 18:51)
| | если php версии выше 5.0.0 то можно использовать 3 параметр функции str_replace указывающий колличество замен.
Т.е.
$str = str_replace("<?".$item."?>","%PHP:".$key."%",$str,1);
|
| |
|
|
|