Stránka 1 z 1

PHP: regexp [regulérní výrazy] PHP

Napsal: pon 31. srp 2020, 17:39
od Jey
Vyzná se tu někdo v regulérních výrazech?

Potřebuju jedním preg_replace() v php odstranit všechny prázdné buňky v tabulce.

Prázdné buňky vypadají asi takto:
<TD bgcolor=#D0D1D2 width=1></TD>
<TD width=1 bgcolor=#D0D1D2></TD>
případně
<TD nějaký jiný bordel></TD>

Přikaz níže mi bohužel odstraní kompletně celou tabulku.
$data = preg_replace("/\<td(.*)\>\<\/td\>/iU", "", $data);

Nechápu proč, když mám v reg výrazu část "><" bez uvozovek, což určuje prázdné buňky.

Re: PHP: regexp [regulérní výrazy] PHP

Napsal: pon 31. srp 2020, 21:26
od Zivan
Nebude to proto, ze ".*" muze byt cokoliv, tedy i nekolik bunek najednou?

Tedy z kodu:
<TD bgcolor=#D0D1D2 width=1></TD>
<TD bgcolor=#D0D1D2 width=1>Neni prazdna</TD>
<TD nějaký jiný bordel
></TD>

Bere to cervene jako .*?

Zkus to zmenit treba na:
$data = preg_replace("/<td([^<>]*)><\/td>/iU", "", $data);

Re: PHP: regexp [regulérní výrazy] PHP

Napsal: pon 31. srp 2020, 21:30
od Jey
Cau, diky. Prave jsem se v tom dovrtal. Nakonec jsem zjistil, ze redakcni system webu neakceptuje vsechny druhy zapisu regexp.

Ale objevil jsem alespon skvely nastroj https://regex101.com/ kde se daji regexpy testovat online.

Nakonec jsem prisel na zapis, co uvadis, ktery jsem jeste doupravil dle potreby.

$data = preg_replace("/\<td[^>]*\>\<\/td\>/iU", "", $data);