Помогите с рег. выражением

snark

Новичок
Помогите с рег. выражением

Есть HTML страница, в которой нужно из всех элементов input взять значение 'name' и добавить его к началу описания 'вот сюда нажно значение name вставить<input', причем все свойства элемента нужно сохранить...

Т.е. есть:
<input type="text" name="datab246rphone2" maxlength="4" class="f10" style="height: 20px;" size="4">

Нужно заменить на:
datab246rphone2<input type="text" name="datab246rphone2" maxlength="4" class="f10" style="height: 20px;" size="4">


Спасибо!
 

snark

Новичок
Necromant
Гхм... а если type="text" будет стоять после name? Да и вообще нет определенного шаблона input- поля, оно может быть абсолютно разным... name может быть как и вначале так и вконце, в середине... причем все свойства нужно сохранить...
 

Anarki

Новичок
PHP:
$string = '<input type="text" maxlength="4" class="f10" name="datab246rphone2" style="height: 20px;" size="4">';
$string = preg_replace('{<input.*?name="(.*?)".*?>}is','$1$0',$string);
 

snark

Новичок
Anarki
Все заработало, спасибо! А если значние поля name заглючено будет в одинарные ковычки или вообще без кавычек? То как быть? Вот такая штуковина [\"|\'] поможет если всеже скобки есть, а если их вообще нет?
 

snark

Новичок
Andreika,
гхм, а ты бы не мог продемонстрировать в примере?
 

Andreika

"PHP for nubies" reader
$string = preg_replace('{<input.*?name=[\"|\']?(\S*)[\"|\']?.*?>}is','$1$0',$string);

datab2<input type="text" maxlength="4" class="f10" name=datab2 46rphone2 style="height: 20px;" size="4">
 

snark

Новичок
Andreika,
А ты проверял это выражение? Оно глючит :), очень удж подозрительный знак вопроса после второго [\"|\']....
 

Andreika

"PHP for nubies" reader
snark
неа, не проверял конечно :) и второй строкой текст с результатом в предыдущем сообщении сам придумал :) богатая у мну фантазия :)

на каких данных и как она глючит ? бум разбирацца
 

snark

Новичок
Она выдает имя после которого стоит двойная кавычка...
 

Andreika

"PHP for nubies" reader
PHP:
$string = preg_replace('{<input.*?name=([\"|\'](.*?)[\"|\']|(\S*)).*?>}is','$2$3$0',$string);
 

Anarki

Новичок
PHP:
$string = preg_replace('{<input.*?name=(["\'])(.*?)\1.*?>}is','$2$0',$string);
Во, будет реагировать только на парные кавычки/апострофы
 
Сверху