2015-03-26 2 views
0

У меня есть переменная, которая состоит из diffrent HTML-теги:PHP дать тег идентификатор его содержимого

$html = '<h1>Title</h1><u>Header</u><h2>Sub Title</h2><p>content</p><u>Footer</u>' 

Я хочу найти все и- теги в переменной HTML $ и дать им идентификатор их содержимого.

Она должна возвращать:

$html = '<h1>Title</h1><u id="header" >Header</u><h2>Sub Title</h2><p>content</p><u id="footer" >Footer</u>' 
+0

Вы что-то пробовали? – Rizier123

+0

вместо этого использует парсер HTML – Ghost

ответ

1

Вы можете использовать preg_replace(), если вы хотите быстрый путь, или узнать о DOMDocument, если вы хотите сделать это надлежащим образом.

$pattern = '~<u>([^<]*)</u>~Ui'; 
$replace = '<u id="$1">$1</u>'; 
$html = preg_replace($pattern, $replace, $html); 
+0

OP хочет идентификатор в нижнем регистре, ваш в верхнем регистре! – Rizier123

+0

@ Rizier123 В HTML значения атрибутов не зависят от регистра. То же самое касается CSS-селекторов. – Forien

+1

' \t

sdfsdf
\t
sdfsdf
'См. разницу? См. Также: http://stackoverflow.com/a/7559251/3933332 И id - селектор! – Rizier123

0

Вы можете использовать preg_replace.

$html = preg_replace('~<u>([^<]+)</u>~e','"<u id=\"".strtolower("$1")."\" >$1</u>"', $html); 

e означает «оценить», что позволяет вам втиснуть команду «strtolower» в замену.

+1

'e' устарел! Не используйте его. – Rizier123

0

это будет хорошо, чтобы сделать это с помощью jquery если это устраивает ваша потребность еще Forien ответ хорошо идти

here it goes to do it in jquery

ваш HTML

<div id='specialString'> 
    <h1>Title</h1><u>Header</u><h2>Sub Title</h2><p>content</p><u>Footer</u> 
</div> 

ваши JS

<script type="text/javascript"> 
    $('#specialString > ul').each(function() { 
     $(this).attr('id', $(this).text()); 
    }); 
</script> 
Смежные вопросы