2015-05-30 8 views
4

Вопрос: Как сопоставить тег привязки с атрибутом идентификатора?Регулярное выражение: как указать захваченную группу должно содержать определенное слово

Моя строка

<a href="something" id="someid" /> 
<a href="something" /> 

Ожидаемый результат:

<a href="something" /> 
<a href="something" /> 

нужно удалить id атрибут в якорных тегов.

я пытался до сих пор:

<a(.*?)> //how to specify `id` should be in the captured group 

Примечание: Я не использовал DOM парсер для этого, так как она сохраняет как HTML.

ответ

4

Проверить на это: https://regex101.com/r/cN9nR3/3

Expression: <a[^>]*(id="[a-z]*").*> должен это делать.

+0

Да, и это также приведет к удалению 'id' (и, возможно, некоторые другие атрибуты) чего-либо еще, рассмотреть этот вход:' '. Упс, элемент 'img' внезапно потерял свой атрибут id и src. –

+0

Исправлено. Счастливый? ... – Falt4rm

+0

Да! Извините, никакого преступления не было, я просто хотел, чтобы все было правильно. Регулярные выражения действительно могут быть болью для HTML. –

3

Вы можете использовать следующий шаблон:

$pattern=/^<a (href=".*?").*\/>$/mg 
$replacement=<a $1 \/> 
$st='<a href="something" id="someid" />\n<a href="something" />' 
preg_replace ($pattern ,$replacement , $st) 

Demo

Смежные вопросы