Windows 8?
12. jun. 2012 09:13
Jeg her følgende regex:
(https?://)?(www\.)?([a-zA-Z0-9_%\-+!\(\)]*)
\b\.[a-z]{2,4}(\.[a-z]{2})?
Den skulle fange en base URL dog inkl. www og/eller http/s og fungerer fint..
Men når jeg smider den ind i preg_match() i PHP, så virker den ikke. Måske er problemet noget med at skulle escape backslash, eller andet? Jeg kan uanset hvad ikke få den til at virke.
Nogen, der lige har styr på det?
http://www.pbtryk.dk
12. jun. 2012 09:20
Prøv:
preg_match('/(https?://)?(www\.)?([a-zA-Z0-9_%\-+!\
(\)]*)
\b\.[a-z]{2,4}(\.[a-z]{2})?/', $subject)Altså med single quotes om pattern. Så burde det ikke være nødvendigt at escape backslash.
12. jun. 2012 09:31
#2 så må der være noget andet galt... Den fanger ikke webadressen (jeg smider en $matches på som parameter og echoer den med $matches[0]... Den er helt tom med input www.multiform.dk
AltsÅ:
preg_match('/(https?://)?(www\.)?([a-zA-Z0-9_%\-+!\
(\)]*)\b\.[a-z]{2,4}(\.[a-z]{2})?/', 'www.multiform.dk',$matches);
echo $matches[0];
Den virker i regExr
http://www.pbtryk.dk
12. jun. 2012 09:39
J(https?://)?(www\.)?([a-zA-Z0-9_%\-+!\(\)]*
)\b\.[a-z]{2,4}(\.[a-z]{2})?rackbox (#1)
Jeg kan få øje på flere problemer med det udtryk:
- Der kan være mange labels i et hostnavn. Du matcher ingen hostnavne med mere end fire labels, og kun hvis de har en meget specifik form.
- Du tillader karakterer i labels som reelt ikke er tilladt i hostnavne.
- Det er lidt uklart om dit \b virker efter hensigten.
- Top level domæner kan være meget længere end fire tegn.
Hvis man vil bruge en heuristik til at matche hostnavne er det nok bedst at bruge en fast liste af alle de gyldige top level domæner. Jeg tror det er sådan Gmail gør, og det virker nogenlunde fornuftigt.
The Internet is full, please try again later.
12. jun. 2012 10:13
#4 fair nok - men jeg har egentlig ikke så meget behov for validering - det sker på et andet tidspunkt. Jeg skal bare have en match, der returnerer base URL med www og/eller http(s)
Hvordan ville PHP-koden se ud?
http://www.pbtryk.dk
12. jun. 2012 10:38
Jeg har lige prøvet det selv, og grunden til at du får et tomt array er ikke fordi den ikke matcher, men fordi den kommer med en fejl:
preg_match(): Unknown modifier '/'Prøv at escape de to "/":
preg_match('/(https?:\/\/)?(www\.)?([a-zA-Z0-9_%\-+
!\(\)]*)\b\.[a-z]{2,4}(\.[a-z]{2})?/', 'www.multiform.dk',$matches);
echo $matches[0];
12. jun. 2012 11:23
Det... var så lidt?
Steve Jobs has no public record of giving to charity. As of 2011 Bill Gates has given about 30 billion to charity.
Det er gratis, og du binder dig ikke til noget.
Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.