Avatar billede gf Nybegynder
28. juli 2006 - 17:10 Der er 10 kommentarer og
1 løsning

Hjælp til preg_match_all

Hej jeg har en postvariabel $_POST['navne'] der indeholder en masse linier der ser ca. sådan ud, der er ikke alle ens men til og med (**) er alle ens portset fra navnet naturligvis.

<LI class=green id="Peter Pedersen" (**)style="Z-INDEX: 1000; LEFT: -29px; ZOOM: 1; POSITION: relative; TOP: 18px" _extended="true" _madePositioned="true" _opacity="1">Peter Pedersen </LI>

Er der en der ved hjælp af preg_match_all kan få alle navnene over i et array eller lign.

mvh gf
Avatar billede coderdk Praktikant
28. juli 2006 - 18:34 #1
if ( preg_match_all( '/<LI class=green id="(.*?)"/i', $txt, $matches ) )
{
  echo "<pre>"; var_dump( $matches ); echo "</pre>";
}

? :)
Avatar billede Slettet bruger
28. juli 2006 - 18:42 #2
Eventuelt kan (.*?) erstattes med ([^"]*)
Avatar billede gf Nybegynder
28. juli 2006 - 19:33 #3
Hej igen nu har jeg testet scriptet og jag kan ikke får noget output (navn)

jeg har testet med dette:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>

<body>
<form action="untitled3.php" method="POST">  <fieldset>    <legend>Skriv i min gæstebog</legend>    <p>      <label for="navn"></label>
  <br>
  <textarea name="besked" cols="0" rows="0" style="width: 300px; height: 200px;"></textarea>
</p>   
<p>      <input type="submit" value="Send!" name="mysubmit">    </p>  </fieldset></form>

<?
$txt = $_POST[besked];
if ( preg_match_all( '/<LI class=green id="([^"]*)"/i',$txt, $matches ) )
{
  echo "<pre>"; var_dump( $matches ); echo "</pre>";
}?>
</body>
</html>

mvh gf
Avatar billede coderdk Praktikant
28. juli 2006 - 19:42 #4
Evt prøv at udskifte:

<?
$txt = $_POST[besked];
if ( preg_match_all( '/<LI class=green id="([^"]*)"/i',$txt, $matches ) )
{
  echo "<pre>"; var_dump( $matches ); echo "</pre>";
}?>

med:

<?
$txt = stripslashes( $_POST['besked'] );
if ( preg_match_all( '/<LI class=green id="(.*?)"/i',$txt, $matches ) )
{
  echo "<pre>"; var_dump( $matches ); echo "</pre>";
}?>
Avatar billede coderdk Praktikant
28. juli 2006 - 20:00 #5
Erh, så først lige hvad du skrev - Du *HAR* ikke noget inputfelt med navn.

Erstat:

<label for="navn"></label>

Med:

<label for="navn">Navn:</label>
<input type="text" name="navn" id="navn">

;)
Avatar billede Slettet bruger
28. juli 2006 - 20:05 #6
Jeg vil lige præcisere mit tidligere indlæg.

"(.*?)" og "([^"]*)" gør nøjagtig det samme. Der er ingen forskel på resultatet af dem. Det er mere et spørgsmål om smag, hvilken man bruger.
Avatar billede gf Nybegynder
28. juli 2006 - 20:08 #7
hej igen det mad label navn er uden betydning, det er besked jeg anvender. sandbox: dit forslag giver heller intet output. ideen med stripslashes giver følgende uotbut i briwseren:

array(2) {
  [0]=>
  array(1) {
    [0]=>
    string(35) "
  array(1) {
    [0]=>
    string(14) "Peter Pedersen"
  }
}
Avatar billede Slettet bruger
28. juli 2006 - 20:15 #8
Nej, hvis coderdks regex ikke giver noget, så gør min heller ikke - og omvendt. Der kan måske være en forskel på hvordan regex-enginen internt behandler de to, og dermed på performance af dem - jeg ved det ikke, da jeg ikke har målt efter. Men uanset den eventuelle forskel, vil deres resultater altid være 100% identiske.
Avatar billede gf Nybegynder
28. juli 2006 - 20:44 #9
Yes, så lykkedes det. Der skulle lige tilføjes en strip_tags. her er løsning:

$a = stripslashes($_POST['sygeelever']);
preg_match_all('/<LI class=green id="(.*?)"/i',$a,$b);
foreach($b[1] as $val)
{
  echo strip_tags($val);
}

1000 tak for hjælpen og læg gerne svar.

mvh gf
Avatar billede coderdk Praktikant
28. juli 2006 - 21:30 #10
Ok :)

sandbox, Korrekt, og dette vil give samme resultat: '/<LI class=green id="(.*)"/Ui' /U er un-greedy
Avatar billede grace45 Nybegynder
22. oktober 2010 - 19:36 #11
Hej min kære,
Hvordan har du i dag, jeg håber, at alle er godt med dig. Jeg er ked af at bekymre dig med min Forslag til et forhold med dig, men jeg ved, at du vil imødekomme min anmodning i god tro og forståelse. Jeg har brug for dig i forretningsbetingelser og rådgive. Mit navn er Grace Dabah jeg bare gik gennem din profil har ingen andre muligheder end at lade dig vide, at jeg er interesseret i at have et forhold med dig, vil jeg også gerne vide dig mere, kan du sende en mail til min e-mail adresse (grace_11dabah @ yahoo.com), så jeg kan sende dig flere oplysninger om mig selv inklusive mit billede. Jeg tror, vi kan gå herfra. Men huske på, at kærlighed ikke har nogen farver barriere, ingen uddannelsesmæssige tilbage jorden barriere, ingen socio-økonomiske barrierer, religiøse, sprog, nationalitet eller afstand hindring, det eneste vigtige der er kærlighed. Jeg venter på din mail til min e-mail adresse ovenfor.
Med venlig hilsen,
Miss Grace.
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