Forum Webscript.Ru
Программирование => PHP => Тема начата: Pr0Head от 21 Января 2002, 21:40:31
-
Здравствуйте уважаемые!
Возник такой вопрос. Как можно сделать замену слова на другое. То есть смысл такой:
Пользователь пишет текст в строке (как я сейчас) и хочет, чтоб какое-то слово было выделено bold`ом. Для этого допустим ему нужно как на этом форуме написать [ B ] TEST [ / B ]. Как можно заменить этот фрагмент на удобоваримый ХТМЛю TEST до записи в файл или наоборот в процессе чтения из файла?
-
str_replace("[ B ]","",$text);
str_replace("[ /B ]","",$text);
-
2 Lion: Спасибо за помощь!
ЗЫ: Правда не сразу получилось, а после того как приравнял эту переменную к результату ее обработки:
$text = str_replace("[ B ]","",$text);
$text = str_replace("[ /B ]","",$text);
Пасиб еще раз!
-
Он тебе про это и говорил :)
-
Ну я же не знал, что ее надо опять к переменной привязывать... :)
Молодой - глупость, старость - не радость... ;)
-
А как посчитать, сколько открывающих тегов было поставлено, что бы закрыть незакрытые
-
[p]substr_count[/p]
либо пользоваться регекспами для выделения BB-кодов
$txt = preg_replace("!\\\\[ b \\\\](.*?)\\\\[ /b \\\\]!", "\\\\\\\\1", $txt);
-
[p]substr_count()[/p]
:D опазадал
-
Напоминаю, что 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 ]" => " );
или что-то типа того, но это уже по желанию...
-
FreeSpace спасибо! Предупредил мой вопрос!