Знатокам регулярных выражений

walder

В ПХП: в preg_replace - как написать регулярное выражение, кторое ищет символ = и когда находит, в случае, если после него идёт " или побел" не делал бы ничего, если любой символ, цифра, спецсимвол типа # - заменял на ="

zya369

хз как в пхп, но в перле это выглядело бы наверное так :
s/=\s*(?!")/= "/g

artimon

Неправильно.
Иди ботай.

zya369

меня ниипет
ЗЫ а что неправильно :? написал первое, что в голову пришло ( как всегда

zya369

ЗЫ на то, что там написано тлько про один пробел и про "буква, символ, или #" я забил

artimon

Ты из xxx= "test" получишь xxx=""test", а это явно не то, что надо

zya369

фсе, воткнул
ЗЫ родил уродца, хотя работает или нет хз
/(=\s+|=(?!\s?!")/= "/;
ЗЫ не пинать - я сонный и вообще просто любитель
ЗЗЫ удобочитаемость решает

zya369

торможу

artimon

Ты меня достал
$result = preg_replace('/(=(?>\s*?!")/','="',$str);

walder

Уточнение: когда = заменяется на =", надо, чтобы после =" искался первый пробел и если перед ним нет ", то она ставилась бы. Именно в этом я вижу основную трудность.
Это вообще возможно сделать одним preg_replace?

artimon

Писец...
Ты можешь связно выразить, что тебе надо.
И вообще, в твоём предыдущем треде я тебе дал две ссылки. Не надо изобретать велосипед...

walder

Если бы ты повнимательнее читал предыдущий тред, ты бы понял, для чего я изобретаю велосипед.

artimon

Читал. Всё равно не понимаю, чем тебе не угодил tidy...

walder

Ну зачем ради того, что можно решить одной, максимум, двумя строками кода выкачивать исходники мегапроги и смотреть, как там все устроено?

artimon

решить одной, максимум, двумя строками кода
Оптимист

stm7884696

мой вариан решения типа неподошел?
хотя имхо - наиболее удобоваримый компромис...
основная тема в том, что сначала надо строку почистить, а потом правильно расставить кавычки...

rosali

Дурацкий план (С). Как впрочем и постановка задачи. Если бы кавычки можно было восстанавливать зачем бы их тогда вообще писали бы?..
 
<tag attr="val></tag><tag attr=val"></tag>
Ну и как тут восстанавливать надо? Или что внутри кавычек не может <> встречаться?

stm7884696

--------------------------------------------------------------------------------
<tag attr="val></tag><tag attr=val"></tag>
--------------------------------------------------------------------------------Ну и как тут восстанавливать надо? Или что внутри кавычек не может <> встречаться?
вот это точно дурацкий пост...
а как ты себе представляешь по синтаксису языка <> внутри атрибутов тега ?
Если мое решение дурацкое - предложи свое...
А кавычки расставлять можно, ибо работают же атрибуты и без кавычек...
единственная проблема, это грамотное восприятие атрибутов с пробелами...
вот тут то и весь пожвох, но ИМХО это можно решить ...

Barbie29

<img src="image.gif" alt=">>>>>>>>>>>>>>>>> "image name" <<<<<<<<<<<<<">

stm7884696

не будет такая конструкция работать... кавычки закроются, ибо вложенность одинаковых кавычек не поддерживается.... а если разные кавычки, то нет проблем...

rosali

 
<html>
<body>
<a href = "url has < and >"> link </a>
</body>
</html>
У меня в IE замечательно работает...

rosali

а как ты себе представляешь по синтаксису языка <> внутри атрибутов тега ?
А что в этом такого противоречивого? По логике вещей, между кавычками можно писать все кроме самих кавычек. Почему стандарты HTML/XML накладывают какие-то (по-твоему видимо очень естественные?) ограничения я не знаю.
Кстати вот тут разрешено > но запрещено <.
А вот тут наоборот.

walder

Про вложенные < и > в постановке задачи ничего не было, просто расставить недостающие кавычки.
Решилось не в 2 строки кода, но работает прекрасно.
Оставить комментарий
Имя или ник:
Комментарий: