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

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

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

 

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

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

тема: выделение цветом
 
 автор: infous   (21.11.2005 в 21:53)   письмо автору
 
 

Хай всем!
Я в регэкспах не очень силен и нуждаюсь в помощи, буду благодарен всем, кто попожет. Вобщем, есть следующий текст:

"I have selected some comondities."
I have selected some comondities.

Как, я могу при помощи регэкспов выделить, предположим, слово selected, не стоящее в кавычках. Это мне надо для выделения текста на веб странице.

   
 
 автор: goddamn   (21.11.2005 в 22:17)   письмо автору
 
   для: infous   (21.11.2005 в 21:53)
 

текст будет на разных строчках , как в примере ? или может быть в одой строке типа "I have selected some comondities."I have selected some comondities. ?

   
 
 автор: infous   (22.11.2005 в 00:33)   письмо автору
 
   для: goddamn   (21.11.2005 в 22:17)
 

на разных

   
 
 автор: goddamn   (22.11.2005 в 00:42)   письмо автору
 
   для: infous   (22.11.2005 в 00:33)
 

пробуй
<?
$text 
"\"I have selected some comondities.\" s
I have selectEd some comondities.
2 \"I have sElectEd some comondities.\" 33
I have SELectEd some comondities."
;

preg_match_all('/^[^\"]+(selected)+[^\"]+$/im',$text,$matches);
echo 
"<pre>";
print_r($matches);
echo 
"</pre>";
?>

   
 
 автор: infous   (22.11.2005 в 01:00)   письмо автору
 
   для: goddamn   (22.11.2005 в 00:42)
 

а ты это проверял? я просто уже пробовал такой вариант, вобще ничего не делает :( ну, я только это на javascript делаю, может поэтому..

   
 
 автор: cheops   (22.11.2005 в 01:05)   письмо автору
 
   для: infous   (22.11.2005 в 01:00)
 

Имеется ввиду, что в качестве текста будет выступать JavaScript-код?

   
 
 автор: goddamn   (22.11.2005 в 11:21)   письмо автору
 
   для: infous   (22.11.2005 в 01:00)
 

конечно проверял, иначе бы не запостил сюда :) покажи, как ты делаешь, может все вместе тут и сообразим, что к чему ?! :)

   
 
 автор: infous   (23.11.2005 в 12:08)   письмо автору
 
   для: goddamn   (22.11.2005 в 11:21)
 

Вот сама страница. ф-я выполняющая замену - Change(), она сначала читает, что записано в div1, а затем с помощью регэкспа должна изменить содержимое, то есть, выделить цветом. Хотя над непосредственно заменой еще надо будет подумать, смысл от этого не меняется. По привиденно выше шаблону ничего не хочет находить в тексе. Я имею ввиду /^[^\"]+(selected)+[^\"]+$/img

<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<script language="JavaScript">
<!--
function Change()
{
    var str = document.getElementById("div1").innerHTML;

    str = str.replace(/^[^\"]+(selected)+[^\"]+$/img, "<font color='red'>$1</font>");
    document.getElementById("div1").innerHTML = str;
}
// -->
</script>
</HEAD>

<BODY>
<div id="div1">
"I have selected some comondities."<br>
I have selected some comondities.
</div>
<a href="javascript: Change()">Change</a>
</BODY>
</HTML>
[/b][b]

   
 
 автор: goddamn   (23.11.2005 в 12:36)   письмо автору
 
   для: infous   (23.11.2005 в 12:08)
 

<HTML> 
<HEAD> 
<TITLE> New Document </TITLE> 
<script language="JavaScript"> 
<!-- 
function Change() 
{
    var str = document.getElementById("div1").innerHTML;
    var regImg = new RegExp('([^\"]+)(selected)+([^\"]+)$', "im");
    str = str.replace(regImg, "$1<font color='red'>$2</font>$3");
    document.getElementById("div1").innerHTML = str;
}
// --> 
</script> 
</HEAD> 

<BODY> 
<div id="div1"> 
"I have selected some comondities."<br>
I have selected some comondities. 
</div> 
<a href="javascript: Change();">Change</a>
</BODY> 
</HTML>

так работает ?

   
 
 автор: infous   (23.11.2005 в 13:05)   письмо автору
 
   для: goddamn   (23.11.2005 в 12:36)
 

ага, работет :-) я вот только не могу понять в чем прикол??? то есть причита была в символе начала строки ^...
В любом случае, огромное спасибо за помощь!

   
 
 автор: goddamn   (23.11.2005 в 13:49)   письмо автору
 
   для: infous   (23.11.2005 в 13:05)
 

а вот если взять
I have selected some comondities.<br>
tratata "I have selected some comondities."<br>
I have selected some comondities. 
... :)
прикол в том, что в Opera,IE и FF по-разному работает :) в Opera - при каждом клике будет выделяться каждое "selected", начиная снизу; в IE - только нижний вариант, в FF - Только верхний :)
так что загвоздка по-прежнему остается в regexp-e

   
 
 автор: infous   (23.11.2005 в 14:13)   письмо автору
 
   для: goddamn   (23.11.2005 в 13:49)
 

как думашь, может это все проще руками написать и не мучеться?

   
 
 автор: infous   (23.11.2005 в 14:06)   письмо автору
 
   для: infous   (23.11.2005 в 13:05)
 

еще интересный момент, а если текст допустим следующий:


<div id="div1">
"selected selected selected"
selected selected selected 
"selected" 
selected
</div>


тогда вобще непонятно как работает...

   
Rambler's Top100
вверх

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