Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Замена < и > в строке <row value=\"<<Def><\"/><row value=\"<<Def1><\"/>

Сообщения:  [1-6] 

 
 автор: cheops   (29.09.2005 в 18:38)   письмо автору
 
   для: AlexMSU   (29.09.2005 в 13:55)
 

Вообще для элегантного решения нужен аналог PHP-функции preg_replace_callback(), тогда бы мы смогли бы обработать всё что в двойных скобках при помощи собственной функции обратного вызова в которой бы и заменяли угловые скобки на их HTML-эквиваленты. А так пожалуй придётся выстраивать именно такую длинную цепочку.

   
 
 автор: AlexMSU   (29.09.2005 в 13:55)   письмо автору
 
   для: AlexMSU   (29.09.2005 в 13:17)
 

да, получилось. Но как-то громоздко.
Что-то в этом роде:
var Dest;
Dest = Source.replace(/<rows>/g, "$islt;rows$isgt;");
Dest = Dest.replace(/<\/rows>/g, "$islt;\/rows$isgt;");
Dest = Dest.replace(/><\/row>/g, "$isgt;$islt;\/row$isgt;");
Dest = Dest.replace(/<row/g, "$islt;row");
Dest = Dest.replace(/><column/g, "$isgt;$islt;column");

//replace '>','<' in non tag places
Dest = Dest.replace(/[<]/g, "&lt;");
Dest = Dest.replace(/[>]/g, "&gt;");

Dest = Dest.replace(/\$islt;/g, "<");
Dest = Dest.replace(/\$isgt;/g, ">");

Но хотелось более изящного решения.
Может быть кто-то и решит.

   
 
 автор: AlexMSU   (29.09.2005 в 13:17)   письмо автору
 
   для: AlexMSU   (29.09.2005 в 13:10)
 

может даже будет проще заменить сначала начала и окончания тегов, а потом уже все вхождения < и > заменить на нужное. А потом опять начала и окончания тегов заменить на < и >.
Надо попробовать.

   
 
 автор: AlexMSU   (29.09.2005 в 13:10)   письмо автору
 
   для: cheops   (29.09.2005 в 13:00)
 

да,
но PHP или JavaScript разницы особой нет. Регулярные выражения одинаковые.

   
 
 автор: cheops   (29.09.2005 в 13:00)   письмо автору
 
   для: AlexMSU   (29.09.2005 в 12:48)
 

Это JavaScript?

   
 
 автор: AlexMSU   (29.09.2005 в 12:48)   письмо автору
 
 

Привет всем.
Кто подскажет регулярное выражение/я, чтобы заменить все < и > на &lt; &gt; в параметре тега value?
Если применить это выражение к
<row value=\"<<Def><\"/><row value=\"<<Def1><\"/>
то на выходе должно быть
<row value=\"&lt;&lt;Def&gt;&lt;\"/><row value=\"&lt;&lt;Def1\"/>

Пробовал что-то вроде этого
str = "<row value=\"&lt;&lt;Def&gt;&lt;\"/><row value=\"&lt;&lt;Def1\"/>";
reg = /(value=\")(.*)<(.*)(\"\/>)/g
str.replace(reg, "$1$2&lt;$3$4")

но заменяет только один символ < и причем только в последнем подходящем шаблоне:
<row value=\"<<Def><\"/>&lt;row value=\"<<Def1\"/>

   

Сообщения:  [1-6] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования