Hur skall jag skriva ett sökmönter för att matcha alla rader i ett dokument som följer den form:
$lang['MENY_HOME'] = "<a href=\"#\">Startsidan</a>";
$lang['MENY_LOGOUT'] = "<a href=\"#\">Logga ut</a>";
Jag vill alltså komma åt all text mellan dubbelfnuttarna på varje rad där jag har $lang['MENY_vadsomhelst'] = "<a href=\"#\">länk</a>";
dvs den feta texten. :)
The_HulkMedlem sedan juni 20031 837 inlägg vet inte om följande kan lösa det, annars kanske det kan vara en liten bit på väg
preg_match_all("/\$lang\['MENY_[^\]]+']\s*=\s*\"(.+)\";/s", $buf, $match);
The_Hulk skrev:
vet inte om följande kan lösa det, annars kanske det kan vara en liten bit på väg
preg_match_all("/\$lang\['MENY_[^\]]+']\s*=\s*\"(.+)\";/s", $buf, $match);
Jag får ingen träffa på den, men om jag tarbort \$ och bara /lang...osv..
så får träffar, returnerar
lang['MENY_HOME'] = "Startsidan"; $lang['MENY_LOGOUT'] = "<a href=\"#\">Logga ut</a>";
..
frågan är om jag skall köra då en preg_match_all igen, och plocka ut det som finns mellan dubbelfnuttarna.. eller om det finns någon annat sätt..
MatteMedlem sedan aug. 20002 975 inlägg Testa med:
"/^\\\$lang\['MENY_[^']+']\s*=\s*\"(.+)\";/m"
Detta mönster
/\$lang\['MENY_[^\]]+']\s*=\s*\"(.+)\";/s
funkade finfint!
Men nu har jag problemet att jag inte vet hur jag skall få det utskrivet.. får bara array eller inget alls.. :s men enligt en sida på nätet där jag kunde testa mönstret kunde den hitta vad jag sökte efter.. men hur skriver jag ut alla som matchade.. :q
MatteMedlem sedan aug. 20002 975 inlägg Vad ska du skriva ut?
I arrayen $match[0] har du hela raderna.
I arrayen $match[1] har du länkarna.