webForumDet fria alternativet

Hur plocka ut textsträngar från en fil?

PHP

5 svar · 519 visningar · startad av robbanf

Medlem sedan maj 200349 inlägg
Frågan#1

Jag har en fil med innehåll som detta:

aI("text=Sida;url=http://www.example.com/sida.php;")
aI("text=Sida 2;url=http://www.example.com/dsad.php;")
aI("text=Annan sida;url=http://www.example.com/fdsfsd.php;")

Jag vill plocka ut texten mellan aI("text= och ; (tex Sida) samt texten mellan url= och ; (dvs länken) från alla förekommande ställen i filen (varje rad ser inte ut på det sättet). Hur gör man det? Jag har läst in filen med file_get_contents men sen vet jag inte hur jag ska få ut bara den information jag vill ha.

Några tips?

Medlem sedan jan. 2005953 inlägg
#2
preg_match_all('/aI\("text=(.*?);url=(.*?);"\)/', $text, $matches);
echo '<pre>'; print_r($matches); echo '</pre>';
Medlem sedan maj 200349 inlägg
#3

Tack!

Nu vill jag skapa klickbara länkar av dessa men lyckas inte få till det riktigt. Med en foreach-sats så lyckas jag skriva ut antingen texten eller länken men inte båda samtidigt.

foreach ($matches[1] as $text) {
echo '<a href="'.$url.'" alt="'.$text.'">'.$text.'</a> <br />';
}

Skriver ut texten men url då?

Medlem sedan jan. 2005953 inlägg
#4

Du kan göra så här:

$text = $matches[1];
$url = $matches[2];
for ($i=0; $i < count($text); $i++) {
    echo '<a href="' . $url[$i] . '">' . $text[$i] . '</a><br />';
}
Medlem sedan maj 200349 inlägg
#5

Underbart, tack så mycket!

Medlem sedan sep. 200619 inlägg
#6

Eller så kör du det hela bakvänt, dvs att du först gör länkar av innehållet i textfilen och sedan kör en explode på allt, så kommer du undan loopen.

ex:

$text = preg_replace('/.*"text=(.*?);url=(.*?);.*?(\r?\n|$)/', "<a href=\"\\2\">\\1</a>\n", $text);
$links = explode("\n", trim($text));

print_r($links);
248 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
122 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)