|
| 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
| |
|
|