webForumDet fria alternativet

enkel regexp

4 svar · 273 visningar · startad av Gaski

GaskiMedlem sedan juni 2000325 inlägg
#1

Försöker ta ut allt inom en TD med:

$sku = preg_replace("<td\sheight=17\sstyle=\"height:12\.75pt\">(.*?)</td>","\1",$line);

Men svaret blir bara:
Warning: Unknown modifier '(' in /home/k/krogkort/www/admin/add.php on line 11

Vad är fel?

MarcusMedlem sedan juli 2000470 inlägg
#2

$str = '<td height=17 style="height:12.75pt">Innehållet</td>';
$str = preg_replace("/<td.*?\>(.*?)<\/td>/","<b>\\1</b>",$str);
print ($str);

Innehållet hamnar i \\1.

Redigerat: Upptäckte att forumet plockar bort backslashar om man skriver inom kodsnuttarna. skumt. Därför skrev jag som vanlig text istället.

Obs! Denna varienten är ganska så "greedy"

GaskiMedlem sedan juni 2000325 inlägg
#3

Nu gör den bara om det den matchar. Jag skulle vilja att den bara skriver ut \\1 och rensar bort alla annan kod från filen. Dvs, övriga <td> och <tr> osv... Går det med preg_replace?

MarcusMedlem sedan juli 2000470 inlägg
#4

Allt går med preg_replace. Bara du förstår hur det fungerar, vilket är mycket svårt. Läs igenom följande sidor för att få ett bättre grepp:
http://www.perldoc.com/perl5.8.0/pod/perlre.html
http://hem.passagen.se/tarning/christer/util/regexp.htm

GaskiMedlem sedan juni 2000325 inlägg
#5

Själva funktionen preg_replace verkar returnera hela strängen utan ändringar om den inte matchar. Det är det som jag inte vill, regexpen är det inge fel på...

128 ms totalt · 3 externa anrop · cache AV · v20260731051352-full.56cc9887
0 ms — hämta statistik (cache)
0 ms — hämta forumlista (cache)
124 ms — hämta tråd, inlägg och bilagor (db)