|
|
|
| Добрый день, есть textarea из которой необходимо вытащить все параметры:
<textarea onkeypress="CaracMax(this, 20) ;" wrap="VIRTUAL" rows="0" cols="0" name="content_text" id="content_text" moslabel="Основной текст" mosreq="1" class="boss_required"></textarea>
|
Т.е. необходимо вытащить и onkeypress, wra, rows, cols, name, id, moslabel, mosreq, class.
Подскажите как лучше составить регулярное выражение, чтобы на выходе был массив:
Array
(
['onkeypress'] => 'CaracMax(this, 20) ;',
['wra'] => 'VIRTUAL',
['rows'] => 0,
['cols'] => 0,
['name'] => 'content_text',
['id'] => 'content_text',
['moslabel'] => 'Основной текст',
['mosreq'] => 1,
['class'] => 'boss_required'
)
|
| |
|
|
|
|
|
|
|
для: maxfade
(14.02.2011 в 09:28)
| | Ну вот решение на перл. Сейчас переведу на php. Спасибо за интересную задачку. Напишу про нее пост.
my $content = <<'END';
<textarea onkeypress='CaracMax(this, 20) ;' wrap="VIRTUAL" rows="0" cols="0" name="content_text" id="content_text" moslabel="Основной текст" mosreq="1" class="boss_required"></textarea>
END
my ($area) = $content =~ /<textarea(.*?)>/;
my @pairs = grep {$_!~/^['"]$/} $area =~ /\b(\w+=(["'])[^\2]+?\2)/g;
my @attr;
foreach my $pair(@pairs) {
push @attr, map {$_=~s/(^['"]|['"]$)//g;$_;} split /\s*=\s*/, $pair;
}
my %attr = @attr;
|
Получаем
$VAR1 = {
"name" => "content_text",
"rows" => "0",
"cols" => "0",
"onkeypress" => "CaracMax(this, 20) ;",
"mosreq" => "1",
"wrap" => "VIRTUAL",
"class" => "boss_required",
"id" => "content_text",
"moslabel" => "Основной текст"
};
|
| |
|
|
|
|
|
|
|
для: SHAman
(14.02.2011 в 09:49)
| | Спасибо, жду с нетерпением... | |
|
|
|
|
|
|
|
для: maxfade
(14.02.2011 в 09:28)
| |
$content = '<textarea onkeypress=\'CaracMax(this, 20) ;\' wrap="VIRTUAL" rows="0" cols="0" name="content_text" id="content_text" moslabel="Основной текст" mosreq="1" class="boss_required"></textarea>';
preg_match("/<textarea(.*?)>/", $content, $area);
$area = $area[1];
preg_match_all("/\b(\w+=([\"'])[^\\2]+?\\2)/", $area, $pairs);
$pairs = $pairs[0];
function trim_quotes($data) {
$data = preg_replace("/(^['\"]|['\"]$)/","",$data);
return $data;
}
$attrs = Array();
foreach($pairs AS $pair) {
$atr = array_map("trim_quotes", preg_split("/\s*=\s*/", $pair));
$attrs[$atr[0]] = $atr[1];
}
print('<pre>');
print_r($attrs);
print('</pre>');
|
| |
|
|
|
|
|
|
|
для: SHAman
(14.02.2011 в 10:51)
| | Спасибо, все работает.... | |
|
|
|
|