|
|
|
| Здравствуйте!
К примеру у нас есть текст в текстовом файле, как:
jess::this is::very good::1
как при помощи формы достать и изменить текст "very good" в textarea? | |
|
|
|
|
|
|
|
для: JESS
(26.03.2008 в 16:09)
| |
<textarea name="test"><?=file_get_contents('файл.txt');?></textarea>
|
| |
|
|
|
|
|
|
|
для: JESS
(26.03.2008 в 16:09)
| | разобрать сроку по метке ::
explode | |
|
|
|
|
|
|
|
для: JESS
(26.03.2008 в 16:09)
| |
<?php
//Форма
$arr = explode("::", file_get_contents("FILENAME.txt"));
echo "
<form method='post'>
<textarea name='text'>". $arr[2] ."</textarea>
<input type='submt'>
</form>";
?>
<?php
//Обработчик
$arr = explode("::", file_get_contents("FILENAME.txt"));
$arr[2] = trim($_POST['text']);
$open = fopen("FILENAME.txt", 'w');
fwrite($open, implode("::", $arr));
fclose($open);
?>
|
| |
|
|
|
|
|
|
|
для: Shiva
(26.03.2008 в 17:28)
| | Класс то что нужно!!! =P Спасибо!! | |
|
|
|
|
|
|
|
для: JESS
(26.03.2008 в 20:10)
| | Осталось добавить, что добавление строки, содержащей "::" к хорошему не приведет. Нужно какое-то эскейпирование сделать:
<?php
function split_string($s, $separator)
{
if( strlen($separator) != 1 )
{
return false;
}
for($i = 0, $r[ 0 ] = '', $k = 0; $i < strlen($s); $i++)
{
if( $s[$i] == '\\' && isset($s[$i + 1]) && $s[$i + 1] == $separator )
{
$r[$k] .= $separator;
$i++;
}
else if( $s[$i] == $separator )
{
$r[++$k] = '';
}
else
{
$r[$k] .= $s[$i];
}
}
return $r;
}
$s = 'jess:this is:escape "\\:":1';
$s = split_string($s, ':');
// И так далее
?>
|
P.S. Ну и разделитель, конечно, лучше использовать из одного символа. Например ":". Двойной замедлит код.
P.P.S. Ах да. Перед добавленем сообщения (перед записью) нужно эскейпировать разделитель:
<?php
$s = str_replace(':', '\\:', $s);
?>
|
| |
|
|
|