Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Замена [ b][ /b] на <b></b>
 
 автор: Адоп Акробат   (09.10.2004 в 19:18)   письмо автору
 
 

Здравствуйте!!!
Мне нужно сделать как у вас на форуме вот допустим это [ b][ /b] заменяется на это <b></b>

   
 
 автор: cheops   (09.10.2004 в 19:31)   письмо автору
 
   для: Адоп Акробат   (09.10.2004 в 19:18)
 

Хм... самый простой вариант заменить тег в квадратных скобках на соотвествующий HTML-эквивалент при помощи функции str_replace():
<?php
    $str = str_replace("[ b]","<b>",$str);
    $str = str_replace("[ /b]","</b>",$str);
?>


Более защищённый и более сложный вариант приведён по ссылке.

http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=142

   
 
 автор: Адоп Акробат   (09.10.2004 в 19:43)   письмо автору
 
   для: cheops   (09.10.2004 в 19:31)
 

Пасиба

   
 
 автор: Адоп Акробат   (09.10.2004 в 20:11)   письмо автору
 
   для: cheops   (09.10.2004 в 19:31)
 

Невтему но не потскажете как зделать чтобы когда нажемаешь на кнопку она вставляла текст. Допустем как у вас когда нажемаешь на [ b][ /b] он вносит в сообщение этиже строки

   
 
 автор: glsv (Дизайнер)   (09.10.2004 в 20:54)   письмо автору
 
   для: Адоп Акробат   (09.10.2004 в 20:11)
 

Делается это Ява-скриптом

Ссылка выглядит таким образом

<a href=# onClick="javascript:tag('', '')">[b][/b]</a>


А вот собственно и нужная функция tag

   function tag(text1, text2)
   {
     if ((document.selection))
     {
       document.form.message.focus();
       document.form.document.selection.createRange().text = text1+document.form.document.selection.createRange().text+text2;
     } else document.form.message.value += text1+text2;
  }

   
 
 автор: Адоп Акробат   (09.10.2004 в 21:16)   письмо автору
 
   для: glsv (Дизайнер)   (09.10.2004 в 20:54)
 

Чота не получаеца может там чота надо изменить?

   
 
 автор: cheops   (09.10.2004 в 21:30)   письмо автору
 
   для: Адоп Акробат   (09.10.2004 в 21:16)
 

Это решение предложил Igorek в своё время - по ссылке оригинальное сообщение.

http://www.softtime.ru/forum/read.php?id_forum=2&id_theme=376&page=1

   
 
 автор: Адоп Акробат   (09.10.2004 в 22:12)   письмо автору
 
   для: cheops   (09.10.2004 в 21:30)
 

Получилось уряяя!!!
Большое спасибо

   
 
 автор: glsv (Дизайнер)   (09.10.2004 в 22:23)   письмо автору
 
   для: glsv (Дизайнер)   (09.10.2004 в 20:54)
 

Ну я как бы только заготовку дал...
Вот рабочий вариант:

<a href=# onClick="javascript:tag('<b>', '</b>')">222222</a> 
<form name=form>
  <textarea name=message cols="30" rows="5"></textarea>
</form>
<script language='JavaScript1.1'>
function tag(text1, text2) 
   { 
     if ((document.selection)) 
     { 
       document.form.message.focus(); 
       document.form.document.selection.createRange().text = text1+document.form.document.selection.createRange().text+text2; 
     } else document.form.message.value += text1+text2; 
  } 
</script>


Вместо <b> </b> в функции tag('<b>', '</b>') нужно писать тэги в квадратных скобках. Здесь просто не получается написать :)

   
 
 автор: Адоп Акробат   (09.10.2004 в 23:02)   письмо автору
 
   для: glsv (Дизайнер)   (09.10.2004 в 22:23)
 

А как мне это зделать с сылкой наподобее
[ url][ /url] ??

   
 
 автор: cheops   (09.10.2004 в 23:16)   письмо автору
 
   для: Адоп Акробат   (09.10.2004 в 23:02)
 

В качестве аргументов функции tag('<b>', '</b>') следует подставить соответствующие тэги:
tag('[ url]', '[ /url]')

   
 
 автор: Адоп Акробат   (10.10.2004 в 01:58)   письмо автору
 
   для: cheops   (09.10.2004 в 23:16)
 

Не я ведь не до такой степени дурак :)
Не получаеся ссылка ведь строится вот так <a href="ссылка">А тут название</a>
??

[поправлено модератором]

   
 
 автор: cheops   (10.10.2004 в 10:32)   письмо автору
 
   для: Адоп Акробат   (10.10.2004 в 01:58)
 

Да кроме этого, требуется, чтобы форма называлась form, а текстовая область message
<form name=form method=post action=handler.php>
<textarea cols=76 rows=10 name=message></textarea>
</form>

   
 
 автор: Адоп Акробат   (10.10.2004 в 16:22)   письмо автору
 
   для: cheops   (10.10.2004 в 10:32)
 

Нет это все у меня получилось но не получаеца с ссылкой я делаю вот так

$_REQUEST["text"] = str_replace("[url]", "<a href=''>", $_REQUEST["text"]);
$_REQUEST["text"] = str_replace("[/url]", "</a>", $_REQUEST["text"]);


Допустим если посетитель введет вот это
[ url]www.softtime.ru[ /url]

то тогда ссылка построица вот таким оброзом
<a href=''>www.softtime.ru</a>

И получица точто ссылка пуста.только название :(

   
 
 автор: cheops   (10.10.2004 в 16:54)   письмо автору
 
   для: Адоп Акробат   (10.10.2004 в 16:22)
 

А, ну здесь, просто следует замену организовать с привлечением регулярных выражений. Т.е. вместо двух приведённых вами замен использовать:
<?php
    $_REQUEST["text"] = preg_replace("/\[url\]\s*(\S*)\s*\[\/url\]/si",'<a href="\\1">\\1</a>',$_REQUEST["text"]);
?>

   
 
 автор: Адоп Акробат   (10.10.2004 в 18:09)   письмо автору
 
   для: cheops   (10.10.2004 в 16:54)
 

Спасиба хеопс с этим получилось. А как мне зделать обратно.
Вот у меня на сайте можно создавать текст и потом его изменять.Как мне зделать чтобы когда пользователь нажимает на кнопку изменить, то ссылка :
<a href='http://www.softtime.ru'>http://www.softtime.ru</a>
формеровалось в обратную сторанну:
[ url]http://www.softtime.ru[ /url]
??

Читал мануал, ничо не понил :(

   
 
 автор: cheops   (10.10.2004 в 19:28)   письмо автору
 
   для: Адоп Акробат   (10.10.2004 в 18:09)
 

Это можно сделать при помощи следующего регулярного выражения:
<?php
  $string = "А вот и ссылка, которую я хотел представить <a href=http://www.softtime.ru>www.softtime.ru</a>, по этой ссылке...";
  $pattern = "|<a[^>]*>([^<]*)</a>|i";
  $replacement = "[ url]\\1[ /url]";
  echo preg_replace($pattern, $replacement, $string);
?>

   
 
 автор: Адоп Акробат   (10.10.2004 в 20:18)   письмо автору
 
   для: cheops   (10.10.2004 в 19:28)
 

Понил спасибо

   
 
 автор: Ozxar   (19.12.2004 в 04:01)   письмо автору
 
   для: Адоп Акробат   (10.10.2004 в 20:18)
 

извените а ссылку такого формата [ url=linet.ru]Ссылка на линет[ /url]
преобразовалась вот в эту
<a href=linet.ru>Ссылка на линет</a>

   
 
 автор: cheops   (19.12.2004 в 10:08)   письмо автору
 
   для: Ozxar   (19.12.2004 в 04:01)
 

Можно воспользоваться следующим регулярным выражением:
<?php 
  $string = "А вот и [ur1 =  http://www.softtime.ru]ссылка[/ur1], которую я хотел представить, по этой ссылке..."; 
  $pattern = "|\[ur1[^=]*=[\s]*([^\]]*)\]([^\[]*)\[/ur1\]|i"; 
  $replacement = "<a href=\\1>\\2</a>"; 
  echo preg_replace($pattern, $replacement, $string); 
?>

Здесь url заменён на ur1, чтобы не форум не интерпретировал код неправильно.

   
 
 автор: Ozxar   (19.12.2004 в 20:42)   письмо автору
 
   для: cheops   (19.12.2004 в 10:08)
 

А на JavaScript как написать скрипт чтоб создавался такой тег?

   
 
 автор: cheops   (19.12.2004 в 21:24)   письмо автору
 
   для: Ozxar   (19.12.2004 в 20:42)
 

Это лучше спросить в http://www.softtime.ru/forum/index.php?id_forum=4, но нужно уточнить что должно получиться в конечном итоге...