| 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! |
||
|
|
Svara med citat
|
|
|
#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']);
|
|||
|
|
Svara med citat
|
|
|
#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. |
||
|
|
Svara med citat
|
|
|
#4 | |||
|
||||
|
Mycket flitig postare
|
Citat:
Speciellt argumentet $matches |
|||
|
|
Svara med citat
|
|
|
#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
|
||
|
|
Svara med citat
|
|
|
#6 | ||||
|
|||||
|
Har WN som tidsfördriv
|
Citat:
![]() Citat:
|
||||
|
|
Svara med 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)
|
|||
|
|
Svara med citat
|
|
|
#8 | ||
|
|||
|
Har WN som tidsfördriv
|
Citat:
Men då kan jag inte köra modulen tillsammans med sidan (include),tack ändå för att du försökte
|
||
|
|
Svara med citat
|
| Svara |
| Ämnesverktyg | |
| Visningsalternativ | |
|
|