![]() |
Hej,
jag har problem med följande rad: Kod:
$page['content'] = preg_replace('%<module>(.*?)</module>%', include('./Modules/' . $1 . '/index.php'), $page['content']); Jag lyckas dock inte få ut vad som står mellan <module> och </module> till en sträng. Följande funkar 'nästan', den skriver ut "Modul: login" Kod:
[CODE]$page['content'] = preg_replace('%<module>(.*?)</module>%', 'Modul: $1', $page['content']); Tack på förhand! |
Jag tror inte include() gör det du tror att den gör. Ditt regex funkar bevisligen, eftersom det byter ut module-taggarna mot Modul: "det som står mellan taggarna".
include() inkluderar och evaluerar sitt argument när den anropas. Det betyder alltså att all kod i din inkluderade fil körs när du inkluderar den. Som jag förstår ditt inlägg vill du att den matchade strängen ska bytas ut mot innehållet i filen. Då är include() fel val. Får jag föreslå nedanstående lösning på ditt problem? Kod:
$page['content'] = preg_replace('%<module>(.*?)</module>%', file_get_contents('./Modules/' . $1 . '/index.php'), $page['content']); |
Citat:
Prolemet ligger inte i includen utan att jag inte kan få ut vad som står mellan <module>*</module> till en sträng. $1 går inte att använda utanför preg_replace. |
Citat:
Speciellt argumentet $matches |
Är det en XML-fil du försöker parsa? Varför inte använda en XML-parser isåfall? Som till exempel simplexml
|
Citat:
Citat:
|
Jao om det är XML så kan du köra någon random XML/RSS PHP-parser.
Men jag har skrivit en funktion i PHP som kan underlätta... Kod:
function pattern ($start, $stop, $string) Kod:
$firstLoad = load("http://www.webmasternetwork.se/nya_tradar.xml", 323600); |
Citat:
tack ändå för att du försökte :) |
Alla tider är GMT +2. Klockan är nu 08:01. |
Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson