Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Получение атрибутов тэгов из HTML-текста
 
 автор: prosaic   (22.03.2007 в 12:46)   письмо автору
 
 

Имеется код:

<?php

$str='<div style="left: 260px; width: 80px; position: absolute; top: 207px; height: 24px"><font face="verdana,geneva" size="5" color="#ff9900">one<font color="#0000ff">two</font>three</font></div>';


preg_match_all('/<[^>]+>|[a-z0-9,\s]+/',$str,$art,PREG_SET_ORDER);


for ($i=0;$i<=(count($art)-1);$i++)
{
$cont = $art[$i][0];

if (strstr($cont,"<"))
{
$tagz = str_replace(array(">","<","px"," ","position:absolute;","z-index:2;","style=","size=","face=","color=","align="),array("","","","","",""," style="," size="," face="," color="," align="),$cont);

preg_match_all("[\S+]", $tagz, $xxx, PREG_SET_ORDER);

$n=count($xxx)-1;

$tagz = $xxx[0][0];

$propz = "";

if ($n>0)
{

for ($y=1;$y<=$n;$y++)
{
if ($y>1) { $propz = $propz." ".$xxx[$y][0]; } else { $propz = $xxx[$y][0]; }
}
}
$massive=array('pos'=>$i,'tag'=>$tagz,'prop'=>$propz);

} else {

$massive=array('pos'=>$i,'text'=>$cont,'prop'=>"");
$prev = $i-1;
$next = $i+1;

}
print_r($massive);
}

?>

с помощью кода строка $str разбивается на теги и текст с позицией и имеющимися свойствами, которые заносятся в массивы. подскажите, пожалуйста, как сделать так, чтобы на выходе была возможность обратится к massive() по ключу 'pos' и получить при этом значение 'tag'.

   
 
 автор: Yuri   (22.03.2007 в 14:54)   письмо автору
 
   для: prosaic   (22.03.2007 в 12:46)
 

Может натолкнет на мысль...

<?php
$str
='<div style="left: 260px; width: 80px; position: absolute; top: 207px; height: 24px">
<font face="verdana,geneva" size="5" color="#ff9900">one
<font color="#0000ff">two</font>three</font></div>'
;
preg_match_all("'<([^>[:space:]]+)([^>]*)>'",$str,$art);
for (
$i=0;$i<(count($art[0]));$i++){
  echo 
"Позиция: ".$i." - Тег: ".$art[1][$i]." - Значение: ".@$art[2][$i]."<br>";
}
?>

   
 
 автор: prosaic   (22.03.2007 в 15:34)   письмо автору
 
   для: Yuri   (22.03.2007 в 14:54)
 

хорошо. а как быть с текстом? конечная задача: присвоить тексту свойства тегов, учитывая вложенность. для этого я обозначил текст. то есть читается строка, натыкаемся на текст. смотрим его позицию, делаем "-1" смотрим тег и его свойства, если последующий за текстом тег - закрывающий, то текст принимает свойства тега.

подскажите, плиз, что делать в таком случае.

   
 
 автор: Yuri   (22.03.2007 в 16:02)   письмо автору
 
   для: prosaic   (22.03.2007 в 15:34)
 

Вообще-то это делает браузер...

   
 
 автор: prosaic   (22.03.2007 в 16:41)   письмо автору
 
   для: Yuri   (22.03.2007 в 16:02)
 

я знаю))))))))) у меня есть визуальный редактор, который сохраняет данные в виде html-кода.
мне их надо преобразовать в мета-данные: (слово, свойства слова).

   
 
 автор: Yuri   (22.03.2007 в 17:23)   письмо автору
 
   для: prosaic   (22.03.2007 в 16:41)
 

Если поможет...

<?php
$str
='<div style="left: 260px; width: 80px; position: absolute; top: 207px; height: 24px">
      <font face="verdana,geneva" size="5" color="#ff9900">one
      <font color="#0000ff">two</font>three</font></div>'
;
preg_match_all("'<([^>[:space:]]+)([^>]*)>([^<]*)'",$str,$art);
for (
$i=0;$i<(count($art[0]));$i++){
  echo 
"<b>Позиция:</b> ".$i." <b>- Тег:</b> ".$art[1][$i]." <b>- Значение:</b> ".@$art[2][$i]." <b>- Текст:</b> ".@$art[3][$i]."<br>";
}
?>

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования