Forum Webscript.Ru

Программирование => PHP => Тема начата: Pr0Head от 21 Января 2002, 21:40:31

Название: Замена слова.
Отправлено: Pr0Head от 21 Января 2002, 21:40:31
Здравствуйте уважаемые!

Возник такой вопрос. Как можно сделать замену слова на другое. То есть смысл такой:

Пользователь пишет текст в строке (как я сейчас) и хочет, чтоб какое-то слово было выделено bold`ом. Для этого допустим ему нужно как на этом форуме написать [ B ] TEST [ / B ]. Как можно заменить этот фрагмент на удобоваримый ХТМЛю TEST до записи в файл или наоборот в процессе чтения из файла?
Название: Замена слова.
Отправлено: Lion от 21 Января 2002, 22:02:53
str_replace("[ B ]","",$text);
str_replace("[ /B ]","
",$text);
Название: Замена слова.
Отправлено: Pr0Head от 22 Января 2002, 13:23:14
2 Lion: Спасибо за помощь!

ЗЫ: Правда не сразу получилось, а после того как приравнял эту переменную к результату ее обработки:

$text = str_replace("[ B ]","",$text);
$text = str_replace("[ /B ]","
",$text);

Пасиб еще раз!
Название: Замена слова.
Отправлено: AlieN от 23 Января 2002, 11:36:01
Он тебе про это и говорил :)
Название: Замена слова.
Отправлено: Pr0Head от 23 Января 2002, 13:10:31
Ну я же не знал, что ее надо опять к переменной привязывать... :)

Молодой - глупость, старость - не радость... ;)
Название: Замена слова.
Отправлено: ZMeY от 27 Июня 2003, 17:27:13
А как посчитать, сколько открывающих тегов было поставлено, что бы закрыть незакрытые
Название: Замена слова.
Отправлено: GotZfild от 27 Июня 2003, 17:48:37
[p]substr_count[/p]
либо пользоваться регекспами для выделения BB-кодов

$txt = preg_replace("!\\\\[ b \\\\](.*?)\\\\[ /b \\\\]!", "\\\\\\\\1", $txt);
Название: Замена слова.
Отправлено: semya от 27 Июня 2003, 17:51:51
[p]substr_count()[/p]

:D опазадал
Название: Замена слова.
Отправлено: FreeSpace от 27 Июня 2003, 17:55:34
Напоминаю, что str_replace (как и preg_replace, если не ошибаюсь) воспринимает в качестве первых двух аргументов массивы.
Поэтому чтобы не писать
$text = str_replace("[ B ]","",$text);
$text = str_replace("[ /B ]","
",$text);
в зависимости от количества заменяемых тегов можно писать либо
// Если тегов много - удобнее править.
$from = array (
"[ B ]",
"[ /B ]"
);
$to = array (
"",
"

);
$text = str_replace($from, $to, $text);
либо просто
 $text = str_replace( array("[ B ]", "[ /B ]"), array("", ""), $text );
Можно, конечно, ещё поиграться с массивами типа
$replace = array(
"[ B ]" => "",
"[ /B ]" => " );
или что-то типа того, но это уже по желанию...
Название: Замена слова.
Отправлено: Vas от 07 Июля 2003, 19:47:33
FreeSpace  спасибо! Предупредил мой вопрос!