/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
udskift af egnet [link] [/link] i streng
Fra : Bo Rattenborg


Dato : 22-02-02 10:28

Jeg har en string hvor jeg ønsker at udskifte [link]www.test.dk[/link] til
<A HREF="www.test.dk">www.test.dk og har løst det på følgende måde:

$linkStart = '[link]';
$linkEnd = '[/link';

$posStart = strpos($text, $linkStart) + strlen($linkStart);
$posEnd = strpos($text, $linkEnd) - $posStart;
$linkText = substr($text, $posStart, $posEnd);
$text = str_replace($linkStart, '<FONT COLOR="#990000"><A HREF="', $text);
$text = str_replace($linkEnd, '">'.$linkText.'</A></FONT>', $text);

print $text;

hvilket også virker ok, men hvordan gør jeg hvis der er flere links i en
streng, og kan overstående gøres på en bedre / enklere måde ? evt. en måde
hvor flere typer af (hedder det tags ?) [xx] kan tilføjes ?

Mvh
Bo



 
 
Mogens Meier Christe~ (22-02-2002)
Kommentar
Fra : Mogens Meier Christe~


Dato : 22-02-02 16:25

"Bo Rattenborg" <bo.rattenborg@[no spam]mail.dk> wrote in message
news:3c760e53$0$18441$ba624c82@nntp02.dk.telia.net...

> Jeg har en string hvor jeg ønsker at udskifte [link]www.test.dk[/link] til
> <A HREF="www.test.dk">www.test.dk

Husk at bruge a href="http://www.... hvis du linker til en anden server!

>og har løst det på følgende måde:
>$posStart = strpos($text, $linkStart) + strlen($linkStart);
>$posEnd = strpos($text, $linkEnd) - $posStart;

[...]

> hvilket også virker ok, men hvordan gør jeg hvis der er flere links i en
> streng,

Sæt et start-offset - altså hvorfra strpos skal starte med at søge. Start
for næste søgning bliver slut for forrige resultat.

>og kan overstående gøres på en bedre / enklere måde ?

Ja, med regular expressions! Specielt ereg_replace().

>evt. en måde hvor flere typer af (hedder det tags ?) [xx] kan tilføjes ?

Øh, ikke forstået! Mener du mht. links eller mener du hvis du får lyst til
at kunne skrive [billede]logo.jpg[/billede]?


--
Mvh. Mogens
B.Sc. i datalogi. Søger IT-job på Fyn!
www.momech.dk





Bo Rattenborg (24-02-2002)
Kommentar
Fra : Bo Rattenborg


Dato : 24-02-02 12:34

> >evt. en måde hvor flere typer af (hedder det tags ?) [xx] kan tilføjes ?
>
> Øh, ikke forstået! Mener du mht. links eller mener du hvis du får lyst til
> at kunne skrive [billede]logo.jpg[/billede]?

ja, lige netop....

Bo



Bo Rattenborg (24-02-2002)
Kommentar
Fra : Bo Rattenborg


Dato : 24-02-02 16:20

Jeg har nu fået lavet følgende, og vil gerne have kommentarer til eventuelle
optimeringer:
<?

$text = 'dette er en test
[link]http://www.test1.com[/link][img]img/back/back2.gif[/img] dette er
endnu en test [link]http://www.test2.com[/link] he he
[link]www.yes.dk[/link] test [img]img/back/back1.gif[/img]';

function string_replace_tag($tagStart, $tagEnd, $tagReplaceStart,
$tagReplaceMiddle, $tagReplaceEnd, $text) {

$offset = 0;

while($posStart = strpos($text, $tagStart, $offset)) {

$posStart = $posStart + strlen($tagStart);

$length = strpos($text, $tagEnd, $posStart) - $posStart;

$strSub = substr($text, $posStart, $length);


if($tagReplaceEnd) $strNew =
$tagReplaceStart.$strSub.$tagReplaceMiddle.$strSub.$tagReplaceEnd;

else $strNew = $tagReplaceStart.$strSub.$tagReplaceMiddle;

$text = str_replace($tagStart.$strSub.$tagEnd, $strNew, $text);

$offset = $posStart;

}

return $text;

}

$tags['[link]|[/link]'] = '<A HREF="|">|</A>';

$tags['[img]|[/img]'] = '<IMG SRC="|">';

while(list($tag, $value) = each($tags)) {

$tag = explode('|', $tag);

$value = explode('|',$value);

$text = string_replace_tag($tag[0], $tag[1], $value[0], $value[1],
$value[2], $text);

}

print $text;

?>



/Bo




Jacob Brandrup (26-02-2002)
Kommentar
Fra : Jacob Brandrup


Dato : 26-02-02 15:36

hejsa

jeg har klaret et ligende problem på følgende måde

function replace($data)
{
$data = ereg_replace("(\r\n|\n|\r)", "<BR>",$data);
$data = ereg_replace("\[url=", "<A HREF=\"",$data);
$data = ereg_replace("\[/url]", "</A>",$data);
$data = ereg_replace("\", "<B>",$data);
$data = ereg_replace("\
", "</B>",$data);
$data = ereg_replace("\", "<I>",$data);
$data = ereg_replace("\
", "</I>",$data);
$data = ereg_replace("\", "<U>",$data);
$data = ereg_replace("\
", "</U>",$data);
$data = ereg_replace("\[align=center]", "<CENTER>",$data);
$data = ereg_replace("\[/align]", "</CENTER>",$data);
$data = ereg_replace("\[email=", "<A HREF=\"mailto:",$data);
$data = ereg_replace("\[/email]", "</A>",$data);
$data = ereg_replace("\[img]", "<IMG SRC=\"",$data);
$data = ereg_replace("\[/img]", "\" BORDER=\"0\">",$data);
$data = ereg_replace("\[list]", "<UL>",$data);
$data = ereg_replace("\[\*]", "<LI>",$data);
$data = ereg_replace("\[/list]", "</UL>",$data);
$data = ereg_replace("]", "\">",$data);
return $data;
}

her er syxtaxen for url dog [url=http://www.domain.net]domain[url] (samme
for mail) men dette kan hurtigt ændres, ved ikke om dette er den bedste måde
men det virker upåklageligt.
--
Mvh
Jacob Brandrup
http://www.forgottenrealms.dk/



Bo Rattenborg (26-02-2002)
Kommentar
Fra : Bo Rattenborg


Dato : 26-02-02 18:27

> function replace($data)
> {
> $data = ereg_replace("(\r\n|\n|\r)", "<BR>",$data);
> $data = ereg_replace("\[url=", "<A HREF=\"",$data);
> $data = ereg_replace("\[/url]", "</A>",$data);
> $data = ereg_replace("\", "<B>",$data);
> $data = ereg_replace("\
", "</B>",$data);
> $data = ereg_replace("\", "<I>",$data);
> $data = ereg_replace("\
", "</I>",$data);
> $data = ereg_replace("\", "<U>",$data);
> $data = ereg_replace("\
", "</U>",$data);
> $data = ereg_replace("\[align=center]", "<CENTER>",$data);
> $data = ereg_replace("\[/align]", "</CENTER>",$data);
> $data = ereg_replace("\[email=", "<A HREF=\"mailto:",$data);
> $data = ereg_replace("\[/email]", "</A>",$data);
> $data = ereg_replace("\[img]", "<IMG SRC=\"",$data);
> $data = ereg_replace("\[/img]", "\" BORDER=\"0\">",$data);
> $data = ereg_replace("\[list]", "<UL>",$data);
> $data = ereg_replace("\[\*]", "<LI>",$data);
> $data = ereg_replace("\[/list]", "</UL>",$data);
> $data = ereg_replace("]", "\">",$data);
> return $data;
> }
> her er syxtaxen for url dog [url=http://www.domain.net]domain[url] (samme
> for mail) men dette kan hurtigt ændres, ved ikke om dette er den bedste
måde
> men det virker upåklageligt.

det var da en simpel måde at gøre det på, det vil jeg kikke lidt nærmere på.

Takker

Bo






Martin Mouritzen (26-02-2002)
Kommentar
Fra : Martin Mouritzen


Dato : 26-02-02 19:22

After I finished the 3 Pan Galactic Gargle Blasters, "Jacob Brandrup"
<webmaster@forgottenrealms.dk> just offered me, he muttered some weird
stuff, and I had to correct this gibberish:

>jeg har klaret et ligende problem på følgende måde
<snip en masse ereg_replace>

Fra www.php.net/str_replace :
| If you don't need fancy replacing rules, you should always use this
| function instead of ereg_replace() or preg_replace().

Derfor, til dit formål, vil jeg anbefale funktionen str_replace
--
Nano Martin Mouritzen Phone +45 24899896
Vestergade 43 Programmer Advanced Simplicty
DK-8000 Århus martin@nano.dk http://www.nano.dk
Note: Nano søger samarbejdspartnere, se mere på websitet

Søg
Reklame
Statistik
Spørgsmål : 177522
Tips : 31968
Nyheder : 719565
Indlæg : 6408669
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste