11. Vladimir - 17 Ноября, 2008 - 09:29:57 - перейти к сообщению
Нужно удалить/заменить "ОТ такого-то фрагмента" и "ДО такого-то".
12. Furax - 17 Ноября, 2008 - 09:38:09 - перейти к сообщению
То есть такой диапазон один. Тогда так:
CODE:
function replaceInterval($Context, $Begin, $End, $Replace)
{
$begin = strpos($Context, $Begin);
$end = strpos($Context, $End) + strlen($End);
return substr($Context, 0, $begin) . $Replace . substr($Context, $end);
}
echo replaceInterval($content, '<--start-->', '<--finish-->', "Чем заменить");
{
$begin = strpos($Context, $Begin);
$end = strpos($Context, $End) + strlen($End);
return substr($Context, 0, $begin) . $Replace . substr($Context, $end);
}
echo replaceInterval($content, '<--start-->', '<--finish-->', "Чем заменить");
13. Vladimir - 18 Ноября, 2008 - 03:25:08 - перейти к сообщению
CODE:
Не работает.function replaceInterval($Context, $Begin, $End, $Replace)
{
$begin = strpos($Context, $Begin);
$end = strpos($Context, $End) + strlen($End);
return substr($Context, 0, $begin) . $Replace . substr($Context, $end);
}
if (strpos($txt2, 'слово')!==FALSE)
echo replaceInterval($content, '<--start-->', '<--finish-->', "чем заменить");
else
echo $content;
{
$begin = strpos($Context, $Begin);
$end = strpos($Context, $End) + strlen($End);
return substr($Context, 0, $begin) . $Replace . substr($Context, $end);
}
if (strpos($txt2, 'слово')!==FALSE)
echo replaceInterval($content, '<--start-->', '<--finish-->', "чем заменить");
else
echo $content;
Если в $txt2 встречается 'слово', то тогда лишь добавляется в начало первого тега "чем заменить", но не заменяется.
14. Furax - 18 Ноября, 2008 - 06:14:15 - перейти к сообщению
А при чём тут вообще другая переменная $txt2?
Да, виноват, не учёл, что искомых подстрок в исходной строке может и не быть. Тогда так:
Да, виноват, не учёл, что искомых подстрок в исходной строке может и не быть. Тогда так:
CODE:
<?php
function replaceInterval($Context, $Begin, $End, $Replace)
{
$begin = strpos($Context, $Begin);
$end = strpos($Context, $End);
if ($begin === FALSE || $end === FALSE)
return $Context;
$end += strlen($End);
if ($begin > $end)
return $Context;
return substr($Context, 0, $begin) . $Replace . substr($Context, $end);
}
echo replaceInterval('Я у <--start-->папы Карло<--finish--> жил долго и счастливо.', '<--start-->', '<--finish-->', "Карабаса-Барабаса");
echo '<br>';
echo replaceInterval('Я у <-start->Чипполино<-finish-> жил долго и счастливо.', '<--start-->', '<--finish-->', "Карабаса-Барабаса");
?>
function replaceInterval($Context, $Begin, $End, $Replace)
{
$begin = strpos($Context, $Begin);
$end = strpos($Context, $End);
if ($begin === FALSE || $end === FALSE)
return $Context;
$end += strlen($End);
if ($begin > $end)
return $Context;
return substr($Context, 0, $begin) . $Replace . substr($Context, $end);
}
echo replaceInterval('Я у <--start-->папы Карло<--finish--> жил долго и счастливо.', '<--start-->', '<--finish-->', "Карабаса-Барабаса");
echo '<br>';
echo replaceInterval('Я у <-start->Чипполино<-finish-> жил долго и счастливо.', '<--start-->', '<--finish-->', "Карабаса-Барабаса");
?>
15. Vladimir - 18 Ноября, 2008 - 14:05:46 - перейти к сообщению
CODE:
Как здесь указать несколько определённых слов, чтобы при присутствии любого из них, вырезались теги?
$tags = array
(
'<--start-->' => $start,
'<--finish-->' => $finish
);
if (strpos($txt2, 'слово')!==FALSE)
echo strtr($content, $tags);
else
echo $content;
(
'<--start-->' => $start,
'<--finish-->' => $finish
);
if (strpos($txt2, 'слово')!==FALSE)
echo strtr($content, $tags);
else
echo $content;
16. Furax - 18 Ноября, 2008 - 23:16:42 - перейти к сообщению
Вырезать теги - функцией strip_tags(). Поиск любого из слов нужно делать в цикле:
CODE:
$words = array
(
'слово',
'вначале',
'было'
);
$badword = false;
foreach ($words as $word)
if (strpos($txt2, $word) !== FALSE)
{
$badword = true;
break;
}
if ($badword)
echo strip_tags($content);
else
echo $content;
(
'слово',
'вначале',
'было'
);
$badword = false;
foreach ($words as $word)
if (strpos($txt2, $word) !== FALSE)
{
$badword = true;
break;
}
if ($badword)
echo strip_tags($content);
else
echo $content;