enkel regexp

PHP

4 svar · 278 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å...

265 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
132 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)