str = '<div class="123" id = "1234" style="width:100px">';
if (str.indexOf(' id')>-1) str = str.replace(/(<div).*?(\sid\s*=\s*.*?)(\s.*?)?(>)/,'\$1\$2\$4');
else str = str.replace(/(<div).*?(>)/,'\$1\$2');
alert(str);
регулярное выражение (js|php)
здравствуйте. Нужна помощь в составлении регулярного выражения (на js или php). Нужно из строки типа '<div class="cl1" id = "el1">' убрать все параметры, за исключением id. При этом я заранее знаю только, что это будет div. Значение id, наличие id в строке и расположение id в строке (в начале, в конце, в середине) не известно. У меня получается сделать это отдельно для вариантов без id и с id, а хотелось бы совместить.
$text='<div class="cl1" id = "el1">';
$var=preg_replace("|(<div)[^>]*(>)|i", "$1$2", $text);
echo $var
?>
Цитата: Fenyx
$var=preg_replace("|(<div)[^>]*(>)|i", "$1$2", $text);
это оставит div вообще без параметров, а мне нужен (только) id (если он есть).
Цитата: Hrew
это оставит div вообще без параметров, а мне нужен (только) id (если он есть).
Туеву хучу параметров нужно учитывать, будет ли пробел между id и =, ,будут ли кавычки и какие одинарные или двойные.... в принципе ревлизуемо
скинь свои регулярки посмотрим
Код:
в принципе работает и меня устраивает, просто интересно как совместить
А нельзя это сделать с помощью DOM ?
с помощью DOM вообще много чего можно. И это тоже, если постараться. Но в данном конкретном случае меня интересует, как будет выглядеть регулярное выражение, которое могло бы решить поставленную задачу одним махом, а не в два приема. Если оно вообще будет как-то выглядеть, конечно.