Strict Standards: Resource ID#18 used as offset, casting to integer (18) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#23 used as offset, casting to integer (23) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#25 used as offset, casting to integer (25) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#26 used as offset, casting to integer (26) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401
ТвойWeb :: Найти и заменить [2]
ТвойWeb ТвойWeb
Качественный Европейский хостинг
Форум для чайников
 Чат на форуме      Помощь      Поиск      Пользователи


 Страниц (2): « 1 [2]   

> Описание: Обработка перед выводом
Vladimir
Отправлено: 17 Ноября, 2008 - 09:29:57
Post Id


Advanced Member


Покинул форум
Сообщений всего: 270
Дата рег-ции: Апр. 2005  

Карма 0




Нужно удалить/заменить "ОТ такого-то фрагмента" и "ДО такого-то".

(Отредактировано автором: 17 Ноября, 2008 - 09:30:33)

 
 Top
Furax
Отправлено: 17 Ноября, 2008 - 09:38:09
Post Id



Бледнотик


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Март 2007  
Откуда: Иркутск, Сибирь, СССР

Карма 32




То есть такой диапазон один. Тогда так:
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-->', "Чем заменить");
 
 Top
Vladimir
Отправлено: 18 Ноября, 2008 - 03:25:08
Post Id


Advanced Member


Покинул форум
Сообщений всего: 270
Дата рег-ции: Апр. 2005  

Карма 0




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;
Не работает.
Если в $txt2 встречается 'слово', то тогда лишь добавляется в начало первого тега "чем заменить", но не заменяется.
 
 Top
Furax
Отправлено: 18 Ноября, 2008 - 06:14:15
Post Id



Бледнотик


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Март 2007  
Откуда: Иркутск, Сибирь, СССР

Карма 32




А при чём тут вообще другая переменная $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-->', "Карабаса-Барабаса");


?>
 
 Top
Vladimir
Отправлено: 18 Ноября, 2008 - 14:05:46
Post Id


Advanced Member


Покинул форум
Сообщений всего: 270
Дата рег-ции: Апр. 2005  

Карма 0




CODE:
$tags = array
(
'<--start-->' => $start,
'<--finish-->' => $finish
);

if (strpos($txt2, 'слово')!==FALSE)

echo strtr($content, $tags);
else
echo $content;
Как здесь указать несколько определённых слов, чтобы при присутствии любого из них, вырезались теги?

(Отредактировано автором: 18 Ноября, 2008 - 14:10:42)

 
 Top
Furax
Отправлено: 18 Ноября, 2008 - 23:16:42
Post Id



Бледнотик


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Март 2007  
Откуда: Иркутск, Сибирь, СССР

Карма 32




Вырезать теги - функцией 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;

(Отредактировано автором: 18 Ноября, 2008 - 23:17:11)

 
 Top
Страниц (2): « 1 [2]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0, скрытых: 0)
« PHP/Perl »


Все гости форума могут просматривать этот раздел.
Только администраторы и модераторы могут создавать новые темы в этом разделе.
Только администраторы и модераторы могут отвечать на сообщения в этом разделе.
 



Форум на AlfaSpace.NET


Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0306]     [ Gzipped ]