Avatar billede akyhne Nybegynder
28. september 2008 - 16:15 Der er 32 kommentarer og
1 løsning

Problem med preg_match_all

Hvorfor giver denne fejl:

$message = 'www aaa www bbb www';
$pattern = 'www';
preg_match_all($pattern, $message, $output, PREG_SET_ORDER);

Fejlen - "Delimiter must not be alphanumeric or backslash in bla. bla."
Avatar billede jakobdo Ekspert
28. september 2008 - 16:31 #1
Prøv at ret pattern til: '/www/';
Avatar billede erikjacobsen Ekspert
28. september 2008 - 16:31 #2
preg_match_all("/$pattern/", $message, $output, PREG_SET_ORDER);
Avatar billede erikjacobsen Ekspert
28. september 2008 - 16:35 #3
Hvis dit 'www' kommer et sted fra, hvor du ikke ved hvilke tegn der er i, så vil jeg anbefale noget i retning af:

$message = 'www aaa www bbb www';
$pattern = preg_quote('www');
preg_match_all("/$pattern/", $message, $output, PREG_SET_ORDER);
Avatar billede akyhne Nybegynder
28. september 2008 - 16:41 #4
Ok, jeg havde selv fundet ud af den med slashen og det hjalp.

Og jeg havde også prøvet med denne:
$pattern = 'http://www\.site\.org/video/(?:[0-9a-z_-]*?)\.flv)';

..og denne
$pattern = 'http://www.site.org/video/(?:[0-9a-z_-]*?)\.flv)';
$pattern = preg_quote($pattern);

..inden i svarede.
Lige lidt hjælper det :(
Avatar billede erikjacobsen Ekspert
28. september 2008 - 16:42 #5
28/09-2008 16:35:22
Avatar billede jakobdo Ekspert
28. september 2008 - 16:44 #6
Hvad er det du vil opnå ?
Avatar billede erikjacobsen Ekspert
28. september 2008 - 16:49 #7
Glem min sidste kommentar. Den vil virke hvis det er ren tekst du leder efter.

Men
  $pattern = 'http://www.site.org/video/(?:[0-9a-z_-]*?)\.flv)';
viser at du leder efter et regulært udtryk. Det du så skal være opmærksom på er at /-erne også skal escapes - eller du skal ikke bruge /-ere. Du kan derfor

$pattern = 'http://www.site.org/video/(?:[0-9a-z_-]*?)\.flv)';
preg_match_all("#/$pattern#", $message, $output, PREG_SET_ORDER);

forudsat du ikke har #-ere i dit regulære udtryk. Valget er op til dig.
Avatar billede akyhne Nybegynder
28. september 2008 - 16:49 #8
"Hvad er det du vil opnå ?"

Finde alle .flv links i en streng og smide dem i et array:

$message = 'http://www.site.org/video/MVI_2142.flv og http://www.site.org/video/MVI_2.flv og http://www.site.org/video/MVI_3.flv';

$pattern = 'http://www\.site\.org/video/(?:[0-9a-z_-]*?)\.flv)';
$pattern = preg_quote($pattern);
preg_match_all("/$pattern/", $message, $output, PREG_SET_ORDER);
print_r($output);

Resultat:
http://www.site.org/video/MVI_2142.flv
http://www.site.org/video/MVI_2.flv
http://www.site.org/video/MVI_3.flv
Avatar billede erikjacobsen Ekspert
28. september 2008 - 16:49 #9
Lidt forkert, men det er tidligt på dagen:

preg_match_all("#$pattern#", $message, $output, PREG_SET_ORDER);
Avatar billede akyhne Nybegynder
28. september 2008 - 16:56 #10
Tja, jeg får da ingen fejl mere... men heller ingen resultater.
Avatar billede jakobdo Ekspert
28. september 2008 - 16:57 #11
Hvad giver:

preg_match_all('%http://www.site.org/video/[0-9a-zA-Z_]+?\.flv%', $input, $output);
Avatar billede akyhne Nybegynder
28. september 2008 - 17:00 #12
16:57:06 ... det jeg ønskede.
Avatar billede erikjacobsen Ekspert
28. september 2008 - 17:03 #13
Ingen resultater? Hvad forventer du med dit regulære udtryk med ?:  ?
Avatar billede akyhne Nybegynder
28. september 2008 - 17:05 #14
Det har jeg søreme ingen ide om. Det er tyvstjålet.
Avatar billede erikjacobsen Ekspert
28. september 2008 - 17:08 #15
Okay - men det var nok det med A-Z der gjorde forskellen ;)
Avatar billede jakobdo Ekspert
28. september 2008 - 17:09 #16
Vil det sige 28/09-2008 16:57:06 virker ?
Avatar billede akyhne Nybegynder
28. september 2008 - 17:13 #17
Yepper
Avatar billede jakobdo Ekspert
28. september 2008 - 17:22 #18
Så får du et svar.
Avatar billede jakobdo Ekspert
28. september 2008 - 19:28 #19
takker for point
Avatar billede akyhne Nybegynder
28. september 2008 - 20:37 #20
Hmm, nå ja, så var der lige den med at
<a href="
og
</a>
skal slettes.
Avatar billede akyhne Nybegynder
28. september 2008 - 20:40 #21
Her er hvordan jeg har lavet det:

<?php
function sub_text( $what) {
$number = rand(1,100000);
$video = '

<!-- start video -->
<script type=\'text/javascript\' src=\'player/swfobject.js\'></script>

  <div id=\'preview'.$number.'\'>This div will be replaced</div>

  <script type=\'text/javascript\'>
  var s1 = new SWFObject(\'player/player.swf\',\'ply\',\'640\',\'480\',\'9\',\'#ffffff\');
  s1.addParam(\'allowfullscreen\',\'true\');
  s1.addParam(\'allowscriptaccess\',\'always\');
  s1.addParam(\'wmode\',\'opaque\');
  s1.addParam(\'flashvars\',\'file='.$what.'\');
  s1.write(\'preview'.$number.'\');
</script>
<!-- end video -->

';
$what = $video;
return $what;
}


function Findsite_Videos($beforemessage) {

$pattern = 'http://www.site.org/video/(?:[0-9a-z_-]*?).flv';
$pattern = preg_quote($pattern);
preg_match_all('%http://www.site.org/video/[0-9a-zA-Z_]+?\.flv%', $beforemessage, $output);


foreach($output as $i => $a) {
    foreach($a as $i2 => $a2) {
        $a3 = str_replace('http://', 'cheat://', $a2);
        $a3 = sub_text($a3);
        $beforemessage = str_replace($a2, $a3, $beforemessage);
    }
}
$beforemessage = str_replace('cheat://', 'http://', $beforemessage);
// Return our message.
return $beforemessage;
}

?>

Et hurtigt lille hint til hvordan jeg kommer videre? Der kan jo være andre links i $message som ikke skal konverteres til et video link.
Avatar billede jakobdo Ekspert
28. september 2008 - 20:46 #22
Hvordan set et fuldt link ud da ?
Og hvad ønsker du som output ?
Avatar billede akyhne Nybegynder
28. september 2008 - 20:51 #23
Tja, det er ski ikke engang nok:

<a href="http://www.site.org/video/MVI_2142.flv" target="_blank">http://www.site.org/video/MVI_2142.flv</a>

Syntaksen vil altid være den samme.

Egentlig skal
<a href="http://www.site.org/video/MVI_2142.flv" target="_blank">http://www.site.org/video/MVI_2142.flv</a>

bare laves til
http://www.site.org/video/MVI_2142.flv
Avatar billede jakobdo Ekspert
28. september 2008 - 20:55 #24
strip_tags() ?
Avatar billede akyhne Nybegynder
28. september 2008 - 21:10 #25
Jeg skal have fjernet 1*link, " target="_blank"> samt tags
Avatar billede jakobdo Ekspert
28. september 2008 - 21:22 #26
Hvis du har:
$str = '<a href="http://www.site.org/video/MVI_2142.flv" target="_blank">http://www.site.org/video/MVI_2142.flv</a>';
og kalder:

$new_str = strip_tags($str); //$new_str vil indeholde: http://www.site.org/video/MVI_2142.flv
Avatar billede akyhne Nybegynder
28. september 2008 - 21:28 #27
Det virkede ikke for mig i første omgang, men det var fordi jeg havde
$a3 = str_replace('http://', 'cheat://', $a2);
foran.
Avatar billede jakobdo Ekspert
28. september 2008 - 21:32 #28
Men så virker det nu eller ?
Avatar billede akyhne Nybegynder
28. september 2008 - 21:51 #29
Yeps, alt ser ud til at være ok: http://smf.e-debatten.dk/index.php?topic=142.0
Avatar billede akyhne Nybegynder
28. september 2008 - 21:52 #30
Så skal det bare flyttes over på den rigtige hjemmeside.
Avatar billede akyhne Nybegynder
05. december 2008 - 08:42 #31
.. Der er så bare lige det problem at koden ikke accepterer bindestreger med mere.
Avatar billede jakobdo Ekspert
05. december 2008 - 09:00 #32
Hvor kan der være bindestreger ?
Avatar billede grace45 Nybegynder
22. oktober 2010 - 18:57 #33
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.
JPG (91KB, 336 x 576)
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