[ Príspevkov: 5 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 11.03.08
Prihlásený: 31.07.11
Príspevky: 67
Témy: 38 | 38
NapísalOffline : 01.02.2011 19:48 | EREG_REPLACE , PREG_REPLACE...

<span style="color: #FFFFFF;">Color: #FFFFFF;</span>

Uz asi 2 hodiny si lamem hlavu s tym ako co najjednoduchsie odstranit z lubovolneho XHTML kódu vložené štýly, presnejšie tieto 4:

font-size, font-family, color, line-height

Najskor som urobil toto:

eregi_replace("color[ ]*:[ ]*#[abcdef0123456789]{3,8}[;]{1}", "", $string);

Problem je ten, ze takto sa odstrani aj text, ktory v skutocnosti nie je styl.
Potrebujem to nejakom osetrit, aby sa to odstranilo len v pripade ze sa retazec nachadza medzi symbolmi: < a >; style=" a ".

Prosim ak mi viete niekto pomoct, vopred Vam velmi pekne dakujem.


Offline

Užívateľ
Užívateľ
EREG_REPLACE , PREG_REPLACE...

Registrovaný: 26.12.06
Prihlásený: 30.10.17
Príspevky: 4009
Témy: 181 | 181
Bydlisko: Nitra / Bra...
Vek: 24
NapísalOffline : 01.02.2011 20:22 | EREG_REPLACE , PREG_REPLACE...

pozri si na php.net strip_tags, mam dojem ze v komentaroch bol kod na funkciu ktora odstranovala pozadovane atributy z pozadovanych tagov


_________________
Sorry za prelkepy
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 11.03.08
Prihlásený: 31.07.11
Príspevky: 67
Témy: 38 | 38
Napísal autor témyOffline : 01.02.2011 21:04 | EREG_REPLACE , PREG_REPLACE...

Ano ale ja nechcem odstranit cely atribut, len konkretne styly: font-size, font-family, color a line-height


Offline

Užívateľ
Užívateľ
EREG_REPLACE , PREG_REPLACE...

Registrovaný: 26.12.06
Prihlásený: 30.10.17
Príspevky: 4009
Témy: 181 | 181
Bydlisko: Nitra / Bra...
Vek: 24
NapísalOffline : 01.02.2011 21:48 | EREG_REPLACE , PREG_REPLACE...

neviem ci sa to da cisto s regularnymi, ja sam ich nejako neovladam...

mozno troska krkolomne riesenie, ale budis, aspon sa mas coho chytit

Kód:
$str = '<a href="color:red;" style="color:red;border:1px solid gray;line-height:18px;background:yellow;">asd</a> color:red; <b style="color:red;">asd</b>';
 
  preg_match_all('#<a (.*?) style="(.*?)"#', $str, $styles); 
  foreach($styles[2] as $style){
    $style = 'style="'.$style.'"';
    $rep = preg_replace('#(font-size|font-family|color|line-height):(.*?);#', '', $style);   
    $str = str_replace($style, 'style="'.$rep.'"', $str);
  }
 
  echo $str;


_________________
Sorry za prelkepy
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 11.03.08
Prihlásený: 31.07.11
Príspevky: 67
Témy: 38 | 38
Napísal autor témyOffline : 02.02.2011 16:31 | EREG_REPLACE , PREG_REPLACE...

emer píše:
neviem ci sa to da cisto s regularnymi, ja sam ich nejako neovladam...

mozno troska krkolomne riesenie, ale budis, aspon sa mas coho chytit

Kód:
$str = '<a href="color:red;" style="color:red;border:1px solid gray;line-height:18px;background:yellow;">asd</a> color:red; <b style="color:red;">asd</b>';
 
  preg_match_all('#<a (.*?) style="(.*?)"#', $str, $styles); 
  foreach($styles[2] as $style){
    $style = 'style="'.$style.'"';
    $rep = preg_replace('#(font-size|font-family|color|line-height):(.*?);#', '', $style);   
    $str = str_replace($style, 'style="'.$rep.'"', $str);
  }
 
  echo $str;


Toto je presne co som potreboval, hoc to nie je cez jednu funkciu, ale to nevadi.

Po niekolkych upravach mi to funguje presne tak ako som chcel.
Dakujem


 [ Príspevkov: 5 ] 


EREG_REPLACE , PREG_REPLACE...



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

ereg, ereg_replace

v PHP, ASP

3

807

16.09.2009 12:04

Triminka



© 2005 - 2017 PCforum, edited by JanoF