Autor Zpráva
bAra
Profil *
Ahoj, chtěla bych odstranit celý tag <script></script> nebo <script type="text/javascript"></script> atd. z textového řetězce.
$source = preg_replace("~<script .*?>.+?</script>~si", "", $source);
Kde mám chybu?
Děkuji Vám
Alphard
Profil
Ten zápis .*? je nějaký divný. Zkoušela jste jen .* a bez té mezery?
~<script.*>.*</script>~si
bAra
Profil *
Zkoušela, a toto <script type="text/javascript">xx</script> mi to neodstraní.
Alphard
Profil
Mně ano
$r = preg_replace("~<script.*>.*</script>~si", '', 'pred<script type="text/javascript">xx</script>za');
var_dump($r);
// string(6) "predza" 
bAra
Profil *
Zjistila jsem že to opravdu funguje ale pokud mám SCRIPT na začátku textu i na konci textu tak mi to smaže vše co je mezi tím:

př:
aaa<script type="text/javascript">bbb</script>ccc
<p>ddd</p>
eee<script type="text/javascript">fff</script>ggg
Tak mi tam zůstane pouze: aaaggg
1Pupik1989
Profil
Třeba:
$source = preg_replace("~<script.*>.*</script>~i", "", $source);

Viz: modifikátory
Radek9
Profil
1Pupik1989:
Ten s modifikátor tam byl dost důležitý. :-) Když budeš mít script na několik řádků, tak ti ho to nesmaže. Použil bych tenhle:
"~<script.*>.*</script>~Usi"
Ten mi funguje. Případně se dá místo U modifikátoru použít jiný zápis „čekoholi“ (jako to měla bAra v prvním příspěvku):
"~<script.*?>.*?</script>~si"
bAra
Profil *
Díky!
1Pupik1989
Profil
Radek9:
Okopíroval jsem zadání z [#5]

Výsledek: string(26), což je to samé. Tedy za předpokladu, že je to jeden string.

aaaccc
<p>ddd</p>
eeeggg

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: