Autor Zpráva
astek
Profil
Zdravím,
do proměnné $string si načtu CSS soubor. A pomocí preg_replace z něho odstraňuji všechny komentáře.
preg_replace("#/\* .* \*/#", "", $string);
To funguje v pohodě na komentáře stylu /* Komentář v CSS */.
Ale už ne na komentáře bez mezer stylu /*Komentář v CSS*/., které bych také potřeboval odstranit.

Dělám si CSS parser, a u tohoto jsem se zasekl.
Předem děkuji za snahu a radu k úpravě reguláru.
Tori
Profil
\s*? = jeden nebo víc bílých znaků. A místo .* použijte radši .*?, ať to nesežere všechno mezi prvním a posledním komentářem. (Nebo bez otazníků ale s modifikátorem "U"). Aha, a chtělo by to i modifikátor s pro víceřádkové komentáře.
astek
Profil
preg_replace("#/\*\s?.*?\s?\*/#", "", $string);
Tori: děkuji mnohokrát.
Keeehi
Profil
preg_replace("#/\*.*?\*/#", "", $string);
Toto by bylo lepší.
astek
Profil
.
astek
Profil
Ahoj,
opět jsem se zasekl :-/
dle rad mám výraz:
$string = preg_replace("#/\*.*?\*/#", "", $string);
Bohužel jsem se setkal s problémem u:

#wrapheader {
    min-height: 20px;
    height: auto !important;
    height: 120px;
/*    background-image: url('styles/subsilver2/theme/images/background.gif');
    background-repeat: repeat-x;*/
/*    padding: 0 25px 15px 25px;*/
    padding: 0;
}
výraz neodfiltruje:
/*    background-image: url('styles/subsilver2/theme/images/background.gif');
    background-repeat: repeat-x;*/
Omlouvám se za opětné obtěžování, bohužel, regulérní výrazy nejsou zrovna moje parketa.
Děkuji za rady
Keeehi
Profil
astek:
"#/\*.*?\*/#s" - aby tečka zahrnovala také znaky nového řádku, musíte přidat modifikátor s.
astek
Profil
Keehi:
Funkční (snad) již ve všech případech,
děkuji mnohokrát ;-)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: