FAQ |
Kalender |
![]() |
#1 | ||
|
|||
Har WN som tidsfördriv
|
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! |
||
![]() |
![]() |
![]() |
#2 | |||
|
||||
Mycket flitig postare
|
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']); |
|||
![]() |
![]() |
![]() |
#3 | ||
|
|||
Har WN som tidsfördriv
|
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. |
||
![]() |
![]() |
![]() |
#4 | |||
|
||||
Mycket flitig postare
|
Citat:
Speciellt argumentet $matches |
|||
![]() |
![]() |
![]() |
#5 | ||
|
|||
Mycket flitig postare
|
Är det en XML-fil du försöker parsa? Varför inte använda en XML-parser isåfall? Som till exempel simplexml
|
||
![]() |
![]() |
![]() |
#6 | ||||
|
|||||
Har WN som tidsfördriv
|
Citat:
![]() Citat:
|
||||
![]() |
![]() |
![]() |
#7 | |||
|
||||
Flitig postare
|
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) { $pattern = "#" . $start . "(.*?)" . $stop. "#"; preg_match_all($pattern, $string, $result); return $result[1]; } function load($url, $bytes) //För php5 { if ($stream = @fopen($url, 'r')) { $html = stream_get_contents($stream, $bytes); fclose($stream); return $html; } } Kod:
$firstLoad = load("http://www.webmasternetwork.se/nya_tradar.xml", 323600); // Den ska hämta allt som är mellan <title> och </title> men i ditt fall får du köra: $modules = pattern('<module>', '</module>', $firstLoad); $titles = pattern('<title>', '</title>', $firstLoad); // Första titeln echo $titles[0]; // Printar ut alla titlar som en array. print_r($titles) ![]() |
|||
![]() |
![]() |
![]() |
#8 | ||
|
|||
Har WN som tidsfördriv
|
Citat:
![]() tack ändå för att du försökte ![]() |
||
![]() |
![]() |
Svara |
|
|