webForumDet fria alternativet
Logga in / Bli medlem

enkel regexp

PHP

4 svar · 273 visningar · startad av Gaski

Medlem sedan juni 2000310 inlägg
Trådstart#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?

Medlem sedan juli 2000449 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"

Medlem sedan juni 2000310 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?

Medlem sedan juli 2000449 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

Medlem sedan juni 2000310 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å...

254 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)