Avatar billede aggemamme Nybegynder
06. juni 2003 - 18:39 Der er 7 kommentarer og
2 løsninger

Erstatning af tegn

Hej

Jeg har en variabel indeholdende noget HTML-kode med bl.a. HyperLinks. Jeg vil gerne ændre på alle de links, der ikke er absolutte (indeholder http://).

$VariabelMedGodeLinks = str_replace('<A HREF="','<A HREF="hula-hop/"',$variabelFyldtMedHtml);

Opfylder til en vis grad behovet. Men jeg mangler en måde at sige, "Undtagen hvis der står '<A HREF="http://'".

Jeg kunne selvfølgelig bagefter finde alle de steder, der står <A HREF="hula-hop/http:// og så køre endnu en str_replace, der laver det tilbage igen, men det virker ikke som en særlig pæn løsning :-)

--
Mange hilsener
Christian
Avatar billede schaefner Juniormester
06. juni 2003 - 18:51 #1
Jeg synes da ikke det er nogen upæn løsning:

<?php
$str = 'gdg dg dg d <a href="http://jubii.dk">Jubii</a> dgdg dg <a href="www.yahoo.dk">Yahoo</a>';
$str = str_replace('http://','',$str);
$str = str_replace('<a href="','<a href="http://',$str);
echo $str;
?>
Avatar billede henan Nybegynder
06. juni 2003 - 18:53 #2
Prøv denne:
if (substr($variabelFyldtMedHtml, 0,16) != '<A HREF="http://')
{
$VariabelMedGodeLinks = str_replace('<A HREF="','<A HREF="hula-hop/"',$variabelFyldtMedHtml);
echo $VariabelMedGodeLinks;
}
Avatar billede henan Nybegynder
06. juni 2003 - 18:54 #3
Hmm, glem min "echo $VariabelMedGodeLinks;" linie - det var kun til testbrug ;-)
Avatar billede schaefner Juniormester
06. juni 2003 - 19:02 #4
<?php
$str = 'gdg dg dg d <a href="http://jubii.dk">Jubii</a> dgdg dg <a href="yahoo.dk">Yahoo</a>';
$str = eregi_replace('<a href="[^http://]{0}','<a href="http://',$str);
echo $str;
?>
Avatar billede schaefner Juniormester
06. juni 2003 - 19:28 #5
argh, pis. Den sidste virker ikke helt korrekt
Avatar billede aggemamme Nybegynder
06. juni 2003 - 22:07 #6
Så er jeg her :)

Det er ikke http:// jeg vil sætte foran de relative URL'er, men derimod hula-hop/

:-)

jeg tænkte også på noget i retning af regular expressions ... Men jeg ved ikke lige hvordan det gøres.

Mht dit eksempel henan, så vil det vel kun checke om de første 16 tegn i hele html-koden er det nævnte, og ikke checke det for alle <A HREF=" ?

Men det kan jo være at jeg bliver nødt til at bruge den "ufine" metode :)
Avatar billede henan Nybegynder
06. juni 2003 - 22:26 #7
Nu forstår jeg :-)

Du har fuldstændig ret i, at mit forslag kun tager de første 16 tegn - my mistake...

Du kan godt gøre det du vil, men det kræver noget langhåret programmering og resultatet ville blive meget grimmere end det du allerede har - så derfor skal du bare bruge din første idé ;-)
Avatar billede aggemamme Nybegynder
06. juni 2003 - 22:59 #8
Det gør ikke noget at selve koden rent æstetisk er grim at se på, men det grimme består bare i at bruge CPU-kraft på først at erstatte en hel masse, og dernæst lave det om igen ... :)

Men da det ikke er kode, hvor performance er vigtig, vil jeg gøre det alligevel, så :)
Avatar billede aggemamme Nybegynder
08. juni 2003 - 13:03 #9
Tak for hjælpen :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester