|
|
|
| Хай всем!
Я в регэкспах не очень силен и нуждаюсь в помощи, буду благодарен всем, кто попожет. Вобщем, есть следующий текст:
"I have selected some comondities."
I have selected some comondities.
Как, я могу при помощи регэкспов выделить, предположим, слово selected, не стоящее в кавычках. Это мне надо для выделения текста на веб странице. | |
|
|
|
|
|
|
|
для: infous
(21.11.2005 в 21:53)
| | текст будет на разных строчках , как в примере ? или может быть в одой строке типа "I have selected some comondities."I have selected some comondities. ? | |
|
|
|
|
|
|
|
для: goddamn
(21.11.2005 в 22:17)
| | на разных | |
|
|
|
|
|
|
|
для: 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>";
?>
|
| |
|
|
|
|
|
|
|
для: goddamn
(22.11.2005 в 00:42)
| | а ты это проверял? я просто уже пробовал такой вариант, вобще ничего не делает :( ну, я только это на javascript делаю, может поэтому.. | |
|
|
|
|
|
|
|
для: infous
(22.11.2005 в 01:00)
| | Имеется ввиду, что в качестве текста будет выступать JavaScript-код? | |
|
|
|
|
|
|
|
для: infous
(22.11.2005 в 01:00)
| | конечно проверял, иначе бы не запостил сюда :) покажи, как ты делаешь, может все вместе тут и сообразим, что к чему ?! :) | |
|
|
|
|
|
|
|
для: 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] | |
|
|
|
|
|
|
|
для: 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>
|
так работает ? | |
|
|
|
|
|
|
|
для: goddamn
(23.11.2005 в 12:36)
| | ага, работет :-) я вот только не могу понять в чем прикол??? то есть причита была в символе начала строки ^...
В любом случае, огромное спасибо за помощь! | |
|
|
|
|
|
|
|
для: 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 | |
|
|
|
|
|
|
|
для: goddamn
(23.11.2005 в 13:49)
| | как думашь, может это все проще руками написать и не мучеться? | |
|
|
|
|
|
|
|
для: infous
(23.11.2005 в 13:05)
| | еще интересный момент, а если текст допустим следующий:
<div id="div1">
"selected selected selected"
selected selected selected
"selected"
selected
</div>
|
тогда вобще непонятно как работает... | |
|
|
|