Toon posts:

Regular expression

Pagina: 1
Acties:
  • 63 views sinds 30-01-2008

Verwijderd

Topicstarter
Hey,

ik heb een regular expression gemaakt voor het zoeken naar hyperlinks in een string:
code:
1
/<a[^>]+href=\"([^\"]+)\"[^>]*>([^<]+)<\/a>/i


dit werkt goed, behalve...
als er naar het href="" stukje nog iets komt.
bijvoorbeeld

<a href="test.html" title="test">lala</a>

deze vind ie niet.

Hoe kan ik mijn regular expression zo aanpassen dat ie die hyperlink ook pakt

  • r0bert
  • Registratie: September 2001
  • Laatst online: 26-01 16:11
Misschien kun je er wel niks mee, maar je kunt links in een document ook uitlezen door middel van.

JavaScript:
1
2
3
4
5
6
objArrLinksInDoc = document.links;

for (var iInt = 0; iInt < objArrLinksInDoc.length; iInt++)
{
   alert('De gevonden link:\n '+objArrLinksInDoc[iInt].innerHTML+' ('+objArrLinksInDoc[iInt].href+')');
}

Verwijderd

Topicstarter
ik handel het serversite af.
Ik gebruik PHP.

Maar ik wil alleen die regular expression aanpassen, zodat ie die andere url ook vind!!

  • ajvdvegt
  • Registratie: Maart 2000
  • Laatst online: 04-12-2025
Verwijderd schreef op 17 March 2003 @ 15:55:
code:
1
/<a[^>]+href=\"([^\"]+)\"[^>]*>([^<]+)<\/a>/i
Ik gok dit:
code:
1
/<a[^>]+href=\"([^\"]+)\".*[^>]*>([^<]+)<\/a>/i

Alles tussen je quote-sluiten tot de > wordt nu genegeerd.

[ Voor 20% gewijzigd door ajvdvegt op 17-03-2003 20:44 ]

I don't kill flies, but I like to mess with their minds. I hold them above globes. They freak out and yell "Whooa, I'm *way* too high." -- Bruce Baum


  • martijn_brinkers
  • Registratie: November 2001
  • Laatst online: 31-10-2025
wat wil je precies matchen?
<a href="test.html" title="test">lala</a>
Wil je href="test.html" uit de text halen of wil je alles tussen <a> en </a> hebben?

Verwijderd

Topicstarter
Wat ik uit de hyperlink wil halen is:
test.html en lala
te de pagina waar die heen gaat en de "klikbare" tekst

ajvdvegt :
ik zal die van jou eens proberen....

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

code:
1
/<a[^>]+href=\"([^\"]+)\"[^>]*>([^<]+)<\/a>/i

Waarom escape je alle quotes? Of staat hij zo in een PHP string?
code:
1
$regex = "/<a[^>]+href=\"([^\"]+)\"[^>]*>([^<]+)<\/a>/i";

:?
ajvdvegt
Die .* ertussen zou niets uit moeten maken, omdat er al op [^>]* gematched wordt.

Mijn voorstel:
PHP:
1
preg_match_all ( '~<a .*?href="([^"]+)"[^>]*>(.*?)<\/a>~', $str, $matches );

[ Voor 3% gewijzigd door drm op 18-03-2003 09:58 ]

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Topicstarter
Ja staat in een PHP string....

drm
Harstikke bedankt....
HET WERKT !!!

Verwijderd

Even een kickje voor een ander regex probleem.

Ik ben bezig met het opzetten van een netwerkmonitor. Hiervoor gebruik ik het Nagios pakket. Dit pakket schrijft standaard echter geen performance data weg en dat is graag wat ik wil. Nu heb ik de plugin SMIstat (perl) geïnstalleerd icm RRDtools. De SMIstat configuratie wil echter dat ik ga werken met regexes om de waarden van Nagios in de RRD db in te voeren. Ik kom er echter niet zo uit en er zit nogal wat druk achter dus ik hoop dat één van jullie zo even een oplossing heeft.

Ik wil dat uit de volgende string het eerste percentage (zonder de %) wordt teruggegeven, 23 dus.

'10 min avg Load'=23%;80;95;0;100 '60 min avg Load'=4%;80;95;0;100 '1440 min avg Load'=4%;80;95;0;100

Ik zoek dus een constructie die naar "'10 min avg Load'=" zoekt en dan vervolgens de achterliggende cijfers teruggeeft.

Alvast bedankt

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 20-02 03:31

Gerco

Professional Newbie

code:
1
\'10 min avg Load\'=([0-9]+)\%


Zoiets?

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • TrailBlazer
  • Registratie: Oktober 2000
  • Laatst online: 07-02 09:48

TrailBlazer

Karnemelk FTW

Gerco schreef op donderdag 13 april 2006 @ 10:47:
code:
1
\'10 min avg Load\'=([0-9]+)\%


Zoiets?
in perl wel ff de spaties escapen
dus
code:
1
\'10\smin\savg\sLoad\'=([0-9]+)\%

Verwijderd

Het werkt, dat wil zeggen alleen als er twee cijfers staan. Waardes onder de 10 worden niet meegenomen. Iemand met een oplossing?

[ Voor 71% gewijzigd door Verwijderd op 13-04-2006 11:23 ]


  • TrailBlazer
  • Registratie: Oktober 2000
  • Laatst online: 07-02 09:48

TrailBlazer

Karnemelk FTW

Verwijderd schreef op donderdag 13 april 2006 @ 11:00:
Het werkt, dat wil zeggen alleen als er twee cijfers staan. Waardes onder de 10 worden niet meegenomen. Iemand met een oplossing?
code:
1
\'10\smin\savg\sLoad\'=(\d+)\%

is sowieso netter

[ Voor 6% gewijzigd door TrailBlazer op 13-04-2006 11:53 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

En voor zo'n vraag schop je een topic van 3 jaar oud, met een vraag die er niets mee te maken heeft? Dit zou hetzelfde zijn als elk willekeurig topic over PHP omhoog schoppen omdat er PHP in de titel staat. :X

Als je een concreet probleem hebt dan mag je daar best een nieuw topic voor openen. Zo'n kick van 3 jaar is eigenlijk nooit gewenst op GoT.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1

Dit topic is gesloten.