Вопрос по рег. выражению

12
Дмитрий
На сайте с 23.08.2006
Offline
222
1085

Подскажите пожалуйста регулярное выражение для поиска в тексте <TagName tut_mnoga_bukaf>

TagName - нам известно

< - начало тега

> - конец тега

Разрабатываю и автоматизирую на php http://jonnyb.ru/
Pavka
На сайте с 20.05.2005
Offline
82
#1

preg_match('/тег(.*)>/Uis', $stroka_poiska, $arr);

в $arr будут найденные вхождения в виде массива

Без подписи
Дмитрий
На сайте с 23.08.2006
Offline
222
#2

Pavka, то что нужно, спасибо. Не мог бы расшифровать что значит Uis?

R2
На сайте с 01.02.2007
Offline
28
#3
JonnyB:
Не мог бы расшифровать что значит Uis

Встряну...

i - невосприимчивость к регистру,

s - обработка точки в шаблоне

U - модификатор жадности (ИМХО)

вообще вот здесь...

D
На сайте с 14.01.2007
Offline
153
#4

как вариант: /<tag[^>]*>/i

Дмитрий
На сайте с 23.08.2006
Offline
222
#5

Усе понял, тести на этом:

<table id=f56 class="sad">

<tr>
<td height="55">asdasdas</td>
<td width=100>ssdddw33</td>
</tr>
<tr upSS="ddd">
<td aassaa=r22>sssss</td>
<td height=100>dddddd</td>
</tr>
</table>

думал останеться это:


<table>
<tr>
<td>asdasdas</td>
<td>ssdddw33</td>
</tr>
<tr>
<td>sssss</td>
<td>dddddd</td>
</tr>
</table>

а получилось:

<table>


<tr>
<td>
<td>
<tr>
<td>
<td>

То есть удалились все закрывающие теги. Это рег выражение использую в javascipt, для чистки текста от мусора при копировании из word в визуальный редактор:

function fix_code(code){

toClear=new Array('TABLE','TR','TD')
var i
for(i=0;i<toClear.length;i++){
// Чистим теги от мусора
v=new RegExp('<'+toClear+'(.*)>',"g")
code=code.replace(v,'<'+toClear+'>')
}
reurn code
}

Кто подскажет, почему удаляются закрывающие теги?

Kolyaj
На сайте с 28.03.2006
Offline
69
#6

Ваш код у меня вернул (правда с добавлением модификатора 'i')

<TABLE>
<TR>
<TD>
<TD>
</tr>
<TR>
<TD>
<TD>
</tr>
</table>

function fix_code(code){
var toClear = ['TABLE','TR','TD'];
for (var i in toClear) {
code = code.replace(new RegExp('<(' + toClear + ').*?>', 'gi'), '<$1>');
}
return code;
}

Дмитрий
На сайте с 23.08.2006
Offline
222
#7

Действительно, теперь работает.Kolyaj, спасипа

S
На сайте с 13.07.2007
Offline
56
#8
JonnyB:
Подскажите пожалуйста регулярное выражение для поиска в тексте <TagName tut_mnoga_bukaf>
TagName - нам известно
< - начало тега
> - конец тега

php


$search = "'<tag[^>]*>'si";
$replace = "<tag>";
$str = preg_replace($search, $replace, $str);
D
На сайте с 14.01.2007
Offline
153
#9

function fix_code(code){
var toClear = ['TABLE','TR','TD'];
for (var i in toClear) {
code = code.replace(new RegExp('<(' + toClear + ').*?>', 'gi'), '<$1>');
}
return code;
}

а если вместо "toClear" поставить "\w+",то будет работать сразу со всеми тэгами.
правда не знаю, надо это или нет

Kolyaj
На сайте с 28.03.2006
Offline
69
#10

solnikolay,

1. Знак вопроса в данном случае лишний.

2. Зачем массивы?

3. Ваш пример тупо удалит теги.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий