» »

Pretvarjanje povezave v link

Pretvarjanje povezave v link

<?php?> ::

Kako v PHPju narediš, da ko uporabnik vpiše v vnosno polje neko povezavo - http://... , da pri izpisu iz tega naredi link?

teac ::


< input type="text" name="link" value="http://" >

Link pa tako:
echo '< a href="'. $link . '">' . $link . '< /a >';

Zgodovina sprememb…

  • spremenilo: teac ()

Baja ::

$link = "http://www.slo-tech.com";
echo "$link";
?>

<?php?> ::

Ne, nisem mislil tako. Bom bolj natančno razložil.
Uporabnik v text box vpiše nek text (kot na forumu naprimer), v tem textu se nahaja tudi en http://... . No in nato klikne pošlji gumb in stvar gre v bazo. No sedaj bi pa rad vlekel iz baze in ko dam ven pretvorim http://.... v a href="http://..." . Nekako kot str_replace(), samo da to pač ne dela. Oviti vi moral povezavo v link. Nekako bi šlo z eval(), ampak ne vem kako, ker bi moral poznati kje je začetek povezave in kje konec... oz. začetek pri http:// ampak konec?

darh ::

$text = preg_replace ("/(ftp|http|https):\/\/([a-z0-9~#%@&:;=!',_ćřĺ\(\)\?\/\.\-\+\[\]\|\*\$\^\{\}]+)/i", "<a href=\"\\1://\\2\">\\1://\\2</a>", $text);
$text = preg_replace ("/([\s|\"])([\w|\.|\-|_]+)@([\w||\-|_]+)\.([\w|\.|\-|_]+)/i", "\\1<a href=\"mailto:\\2@\\3.\\4\">\\2@\\3.\\4</a>", $text);


bo šlo ?
Excuses are useless! Results are priceless!

Zgodovina sprememb…

  • spremenil: darh ()

<?php?> ::

Hm, najbrž ne...
Moram malo preštudirati funkcijo k mi je nova...
Se slišimo malo kasneje...:)

<?php?> ::

Ja, samo to zdaj naredi link samo če je http:// vspredaj. Če ga ni linka ne bo. Pa sem hotel da bi naredil eno funkcijo za z http-jem in eno za brez, ampak potem se kregata med sabo...:)
Kaj naj sedaj naredim?

Pa tudi una za email mi ni delala...

darh ::

yao yao


men je tole delal BP... v spremenjivki $text maš pač en tekst, ki vsebuje (ali pa ne) linke (ki se začnejo ftp, http ali https (lahko tudi drugi, če se ti da dodajat)), in emaile ( nekdo@nekje.com )...


mora delat 100%...

p.s.: pa ne drkej po regular expresionih, če nimaš pojma kaj delaš !!!
Excuses are useless! Results are priceless!

<?php?> ::

OK, sem malo preštudiral to in če se ne motim bi moral stran dati tole:
(ftp|http|https):\/\/

Ker išče http ali ftp ali https zatem : in potem // ki pa imajo exape-e prej.

Samo ni mi čisto jasno kakšna je razlika med oklepaji in oglatimi oklepaji.
In pa tale del:
([a-z0-9~#%@&:;=!',_ćřĺ\(\)\?\/\.\-\+\[\]\|\*\$\^\{\}]+)/i

Mi ni čisto jasen. Najprej išče za a-z, nato 0-9 potem se pa začnejo ~#%@&:;=! a imajo kakšno posebno veljavo ti znaki ali gre pač za "navaden" znak?

Samo je dobra skripta, k spremeni v link tudi če imaš ? al & notri... pohvalno ...:D

Loki ::

darh ::

PHP ima quick-how-to v manualu za regular expresione...

taledva ti bom pa jaz razložu kar znam...

torej.. prvi ki pretvarja linke
/(ftp|http|https):\/\/([a-z0-9~#%@&:;=!',_ćřĺ\(\)\?\/\.\-\+\[\]\|\*\$\^\{\}]+)/i

/ - pač začetek regexp
(ftp|http|https) - pogoji, lahko ftp ali http ali https, če češ lahko tudi sam kakega dodaš oziroma pobrišeš
:\/\/ - to se prebere kot ://, torej trije znakci ki sledijo zgornjemu stringu (eskejpani morjao biti zato, ker ima znak / nek pomen v regexp)
([a-z0-9~#%@&:;=!',_ćřĺ\(\)\?\/\.\-\+\[\]\|\*\$\^\{\}]+) - enkup "pravilnih" znakov... kot lahko opaziš vmes ni presledka (\s), saj bi ti v tem primeru text do konca spremenilo v link. tudi nove vrtice in tablulatorji prekinejo "match" (\n in \t). Vse ostale znake pa upošteva kot pravilne... od a do z, od 0 do 9, znake ~ # ? & in tko dalje... razen presledka seveda ;)
oglati oklepaji označujejo pričetek in konec definicije razreda znakov ;)) (character class definition). Plus (+) znak na koncu definicije, za ] pa pomeni, da mora biti vsaj en tak znak v tekstu, da je match uspešen (* za 0 ali več znakov, + za 1 ali več znakov...)
/ - z tem znakom zopet označimo konec regexp definicije
i - ta "PCRE modifier" pove, da nam ni važno, ali so znaki veliki ali majhni (hint: če nebi bilo tega modifajerja, gi mogli za vsak dan znak podati tudi jegovega večjega brata - a,A, b,B ali kako bi zgledala definicija: a-zA-Z ). Obstajajo tudi drugi modifierji, naprimer m, s, x... več o njih si lahko prebereš v manualu...

uh uh... xbite pridn.. ;)
Excuses are useless! Results are priceless!

Zgodovina sprememb…

  • spremenil: darh ()

cahahopie ::

Wau! To ti je stari ta čorba katere sem se jaz v dolgih ovinikh izogibo. No vidm, da bom lahk s tem popravu velik svoje lame kode. :D

Hmm... prvazaprav pa sem jezn, ker zdaj bom pa spet hotu neki bolšga delat... že itak sem za rokom :D

P.S: Pridn, pridn ... kot zmeraj!:D

cahahopie ::

Hmm... namest preg_replace lahk uporabiš eregi_replece, ki je soroden ereg_replece le, da igonorira velike in male capse... Piše pa da je občasno počasnješi od prvega.
(vau..znam... :D ...vse v Manualu).

<?php?> ::

Tenx za "inštrukcije" in linke, pa se bom oglasil ko bom to preštudiral...

Pa še nekaj:
Nisi pa povedal čemu so ( in ). Vsaj zdi se mi.
Samo a nebi bilo če bi potem napisal *, da naj pogleda če http:// obstaja, in če naredi link, če pa ne, pa pravtako?

darh ::


general escape character with several uses
^
assert start of subject (or line, in multiline mode)
$
assert end of subject (or line, in multiline mode)
.
match any character except newline (by default)
[
start character class definition
]
end character class definition
|
start of alternative branch
(
start subpattern
)
end subpattern
?
extends the meaning of (, also 0 or 1 quantifier, also quantifier minimizer
*
0 or more quantifier
+
1 or more quantifier
{
start min/max quantifier
}
end min/max quantifier
Part of a pattern that is in square brackets is called a "character class". In a character class the only meta- characters are:

\
general escape character
^
negate the class, but only if the first character
-
indicates character range
]
terminates the character class



vse ti piše tukaj !!!
Excuses are useless! Results are priceless!

<?php?> ::

No, to sem tudi sam iskal pa nisem našel. Tenx...:D

TylerDurden ::

Men je dosti bolj kul gumb oz. prompt, kjer vneseš link pa besedo pa ti potem zgenerira html link v tekst noter.
Let\'s make some soap ...

Tjulenj ::

kaksna je pa oznaka za enter? bi rad celoten textarea izpisal v samo eno vrstico, tud če je vnešen enter vmes

darh ::

read the goddamn f****n manual :D


\n
newline (hex 0A)
\r
carriage return (hex 0D)


samo to je od sistema do sistema (OS) razližno, tako daj e najbolje da narediš takole: \n|\r.. that'z it...
Excuses are useless! Results are priceless!


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Javascript DOM based XSS vulnerability

Oddelek: Programiranje
152477 (1899) MrStein
»

[php] brisanje nedovoljenih znakov

Oddelek: Izdelava spletišč
71351 (1199) keworkian
»

PHP - stringi

Oddelek: Izdelava spletišč
251644 (1467) pehape
»

[php]: preprost problem in preg_replace()

Oddelek: Izdelava spletišč
61077 (1015) R33D3M33R
»

Pomoč pri MySQL in PHP...

Oddelek: Programiranje
161739 (1607) darh

Več podobnih tem