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

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

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

 

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

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

тема: поменять стиль width для таблицы
 
 автор: Igorek   (03.02.2011 в 08:19)   письмо автору
 
 

собственно сабж.
если у таблицы задан
style="другие стили; width: любое_значение_px; другие стили"

или так
style="width:любое_значение_px"

необходимо поменять width на другое значение. например 100%

будьте так добры подскажите правильную регулярку для такого случая.

  Ответить  
 
 автор: SHAman   (03.02.2011 в 10:38)   письмо автору
 
   для: Igorek   (03.02.2011 в 08:19)
 

preg_replace("/width:\s*([^;]+;)/", "width: 100%;", $text);


мог ошибиться в оформлении функции preg_replace;

  Ответить  
 
 автор: Igorek   (03.02.2011 в 10:50)   письмо автору
 
   для: SHAman   (03.02.2011 в 10:38)
 

так конечно пойдет, но в таком случае для всех тэгов width сменится, а мне надо только для таблицы <table>.

хм... подумалось, может сначала вытаскивать <table ...> и в обратном вызове применять вашу функцию?

  Ответить  
 
 автор: cheops   (03.02.2011 в 10:53)   письмо автору
 
   для: Igorek   (03.02.2011 в 10:50)
 

А кусочек HTML-кода с таблицей можно увидеть, чтобы было на чем воспроизвести ситуацию?

  Ответить  
 
 автор: Igorek   (03.02.2011 в 11:15)   письмо автору
 
   для: cheops   (03.02.2011 в 10:53)
 

эх... начал искать пример, натолкнулся на вариант где еще и через атрибут ширина задана, надо бы тоже поправить:
<P>  <TABLE cellSpacing=0 cellPadding=0 width=587 border=0 x:str>  
<COLGROUP>  <COL width=31>  <COL width=205>  <COL width=83>  
<COL width=71>  <COL width=68>  <COL width=64>  <COL width=65> 
 <TBODY>  <TR height=37>  <TD width=31 height=64 rowSpan=3>№ п/п</TD>  <TD widt...


ну а вообще про такой пример шла речь:
<table style="width: 1274px;" border="0" cellspacing="0" cellpadding="0">
<colgroup span="1"><col span="1" width="34"></col><col span="1" width="423"></col><col span="1" width="108"></col><col span="1" width="221"></col


и, еще стоит отметить, единицы измерения ширины могут быть различными (px, pt, %)

  Ответить  
 
 автор: cheops   (03.02.2011 в 11:54)   письмо автору
 
   для: Igorek   (03.02.2011 в 11:15)
 

Я думаю каждый случай следует обрабатывать отдельным регулярным выражением, т.е. как-то так
<?php 
  $text 
'<table style="width: 1274px;" border="0" cellspacing="0" cellpadding="0"> 
<colgroup span="1"><col span="1" width="34">
</col><col span="1" width="423"></col>
<col span="1" width="108"></col><col span="1" width="221"></col'

  
$pattern "|(<table[^>]+width:[\s]*)([\d]+[^;]+;)|is"
  
$text preg_replace($pattern"\\1 100%;"$text);
  echo 
$text;
?>

а для второго случая, как-то так
<?php
  $text 
'<P>  <TABLE cellSpacing=0 cellPadding=0 width=587 border=0 x:str>   
<COLGROUP>  <COL width=31>  <COL width=205>  <COL width=83>   
<COL width=71>  <COL width=68>  <COL width=64>  <COL width=65>  
 <TBODY>  <TR height=37>  <TD width=31 height=64 rowSpan=3>№ п/п</TD>  <TD widt...'
;
  
$pattern "|(<table[^>]+width=)([\d]+)|is"
  
$text preg_replace($pattern"\\1 100%"$text);
  echo 
$text;
?>

  Ответить  
 
 автор: Igorek   (03.02.2011 в 12:04)   письмо автору
 
   для: cheops   (03.02.2011 в 11:54)
 

Благодарю, похоже работает. и не такой уж сложный паттерн((

  Ответить  
 
 автор: Deed   (25.02.2011 в 16:06)   письмо автору
 
   для: cheops   (03.02.2011 в 11:54)
 


<?
$text
=preg_replace("/(<table.+?width(:|=)(|'|\")\s*)(?:\d+\D+?)\b/is","$1 100% ",$text);
?>


По-моему, это универсальное решение для обоих приведенных случаев.

  Ответить  
Rambler's Top100
вверх

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