Toon posts:

[php] target=_blank weg bij php-grab

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb op een pagina het laatste nieuws gezet en opgeslagen als recent.htm.
Nu wilde ik dit laatste nieuws herhalen op de startpagina, doormiddel van het volgende grab-script:
Code:
<?php

$fd= fread(fopen("http://www.mijndomein.nl/recent.htm", "r"), 100000);

if ($fd)
{
$start= strpos($fd, "<p><font face=\"Arial\" size=\"4\">");
$finish= strpos($fd, "<table border=\"1\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\" bordercolor=\"#FF0000\">");
$length= $finish-$start;
$code=Substr($fd, $start, $length);
}


echo $code;

?>

In recent.htm had ik ook een aantal links opgenomen, naar verwante artikelen op internet. Dit had ik dan als volgt gedaan: <a href="http://www.xbox.nl" target=_blank>Xbox</a>.
Maar tot mijn verbazing werd xbox.nl op de startpagina niet in een nieuw venster geopend
Hoe kan ik dit probleem oplossen zodat het wel in een nieuwe pagina opent??

Verwijderd

str_replace ?

Verwijderd

Topicstarter
Sorry, ik ben absoluut niet goed in php...
Zou je het misschien iets duidelijker kunnen uitleggen? (misschien door mijn scriptje iets aan te passen)
Alvast hartelijk bedankt! :)

Verwijderd

Misschien moet je even in de source van je pagina kijken die wordt gegenereerd wordt door het php script. Ik zie namelijk geen reden dat een target=_blank verwijderd zou worden door dit stukje code.

Verwijderd

Topicstarter
Op recent.htm heb ik target=_blank weggelaten.
Is het ook mogelijk om die toe te voegen op de pagina die recent.htm grabt?

  • Rashann
  • Registratie: Maart 2000
  • Laatst online: 24-08 07:20

Rashann

Zoek de hond...

Op donderdag 18 juli 2002 17:36 schreef ardjan het volgende:
Op recent.htm heb ik target=_blank weggelaten.
Is het ook mogelijk om die toe te voegen op de pagina die recent.htm grabt?
Ja...
code:
1
preg_replace("'<a(.*?)>'si", "<a \\1 target=_blank>", $grabtekst);

Dit zoekt naar alle "<A (vul hier iets in) >"'s en plakt dan target=_blank voor de sluit >.

Dus <A HREF="url"> wordt <A HREF="url" target=_blank> en <A NAME="0"> wordt <A NAME="0" target=_blank>. Je moet alleen wel zorgen dat er geen > binnenin de tag komt (bijvoorbeeld in een JavaScript/onMouseOver tekst ofzo)

If nothing is written below, I was the last to reply...


Verwijderd

Topicstarter
Hartstikke bedankt voor uw reactie...
maar waar moet ik die code neerzetten in mijn script?
En werkt dat script maar voor 1 link, of voor allemaal?
Want eigenlijk is het de bedoeling dat alle links in een nieuw venster worden geopend.
Ik hoop dat dit mogelijk is, maar anders toch bedankt!

Verwijderd

Als een na laatste regel:

[php]$code = preg_replace("'<a(.*?)>'si", "<a \\1 target=_blank>", $code);

  • Rashann
  • Registratie: Maart 2000
  • Laatst online: 24-08 07:20

Rashann

Zoek de hond...

De uiteindelijek versie zou dus dit worden:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php 
$fd= fread(fopen("http://www.mijndomein.nl/recent.htm", "r"), 100000);

if ($fd) 
{
  $start= strpos($fd, "<p><font face=\"Arial\" size=\"4\">"); 
  $finish= strpos($fd, "<table border=\"1\" cellpadding=\"0\"".
       " cellspacing=\"0\" width=\"100%\" bordercolor=\"#FF0000\">"); 
  $length= $finish-$start; 
  $code=Substr($fd, $start, $length); 
}
/* Hieronder is de PREG_REPLACE code toegevoegd: */ 
$code = preg_replace("'<a(.*?)>'si", "<a \\1 target=_blank>", $code);
echo $code; 
?>

Even wat uitleg zodat je het de volgende keer zelf kan:
Het stukje code wat ik gegeven heb voert een Regular Expresion uit, en vervangt alle gevonden delen in de string (dus ja, ALLE <a>'s worden aangepast) met de tweede string in de functie. De \\1 die daar staat refereert naar de eerste string, specifiek het deel tussen haakjes, de .*? dus. \\1 krijgt dezelfde waarde die de .*? vind, en dus houd de 'nieuwe' <a> ook de oude velden (aangezien daar ook alles voor de sluit '>' stond, en dat het laatste karakter was van de eerste string.

OK... ik zal je ondertussen wel kwijt zijn :) maar kijk maar even in de FAQ hier, en dan wordt het (hopelijk) een stuk duidelijker.

Als je wilt testen of hij inderdaad werkt: Plak hier je HTML maar in, en kijk hier voor de source van dit bestand.

Succes!

If nothing is written below, I was the last to reply...


  • Bender
  • Registratie: Augustus 2000
  • Laatst online: 17-08 16:09
waarom zie ik de link:

www.php.net/str_replace niet?

  • Rashann
  • Registratie: Maart 2000
  • Laatst online: 24-08 07:20

Rashann

Zoek de hond...

Op donderdag 18 juli 2002 23:13 schreef TRiLoXiGeN het volgende:
waarom zie ik de link:

[url="http://www.php.net/str_replace"]www.php.net/str_replace[/url] niet?
Omdat jij die voor het eerst in dit topic geplaatst hebt? :+

Even serieus: Die zou inderdaad gebruikt kunnen worden, maar dan moet je eerst weer alle <a's of alle <A's omzetten, wat nog veel lastiger word (de hele tekst omzetten gaat niet vanwege de hoofdletters enzo die waarschijnlijk in de tekst zitten), of 2x zoeken.

Met dit omzetten ben je dan nog meer codes aan het gebruiken... maar het zou kunnen, in plaats van mijn code kan je ook
code:
1
2
str_replace('&lt;a', '&lt;a target=_blank', $code);
str_replace('&lt;A', '&lt;A target=_blank', $code);

of
code:
1
2
str_replace('&lt;a', '&lt;A', $code);
str_replace('&lt;A', '&lt;A target=_blank', $code);

gebruiken. Maar daarbij vind ik het zelf mooier als de HREF= in een <A tag voor de rest staat ;)

Zeg nou zelf:
<A HREF="url.doet.het/nie" TARGET="_blank"> is toch mooier dan
<A TARGET="_blank" HREF="url.doet.het/nie"> :7

If nothing is written below, I was the last to reply...

Pagina: 1