22. januar 2003 - 21:47
Der er
42 kommentarer og 1 løsning
strstr funktion
Hvordan udvider man denne funktion til at finde et punktum, der er efterfulgt af mellemrum og nyt stort bogstav? if (strstr($test,".")) $pos=strpos($test,".");
Annonceindlæg fra Trustworks
Tillid i en Zero-Trust verden
Med voksende trusler, nye EU-krav og øget kompleksitet er cybersikkerhed nu en central ledelsesopgave på linje med strategi og økonomi.
22. januar 2003 - 21:49
#1
.
22. januar 2003 - 21:54
#2
Altså noget i retning af: if (strstr($test,"."." "."STORTBOGSTAV")) $pos=strpos($test,"."." "."STORTBOGSTAV");
23. januar 2003 - 02:15
#3
Eller også bruger man nogle af reg.exp. funktionerne - det lyder som om opgaven nemmest løses vha. dem...
23. januar 2003 - 10:24
#4
Enig - det er nemmere i regexp... Du kan bruge dette til at se om der er et match: preg_match("/\. [A-Z]/",$test,$result); $result får tildelt værdien som der findes og selve preg_match returnere true eller false alt efter om der findes et match. Fx: $test=". G"; if (preg_match("/\. [A-Z]/",$test,$result)) { echo 'Der er fundet et match: "'.$result[0].'"'; } else { echo 'Intet match'; }
23. januar 2003 - 10:59
#5
Jeg kan ikke rigtig overføre det på mit script: if (preg_match("/\. [A-Z]/",$test,$result)){ $find = preg_match("/\. [A-Z]/",$test,$result); $pos=strpos($find); }
23. januar 2003 - 11:11
#6
Hvad skal du med strpos? Skulle du ikke finde ud af om der var et match? Er det dette her du mener? if ($find=preg_match("/\. [A-Z]/",$test,$result)){ $pos=strpos($find,".") }
23. januar 2003 - 11:12
#7
^^^^^Dette finder positionen på punktummet... Er det dette du mente?
23. januar 2003 - 11:14
#8
Jeg skal finde positionen på det første punktum efterfuldt af mellemrum og et stort bogstav.
23. januar 2003 - 11:15
#9
//####### Klipper et stykke tekst ud der ligger lige fra 180 til 280 tegn inde i texten $test=substr($row[tekst],180,100); //####### Finder positionen for det første punktum hvis der er et if (strstr($test,". ")) $pos=strpos($test,". "); else{ //####### Ellers klippe et større stykke tekst ud $test1=substr($row[tekst],140,300); //####### og finder igen positionen for det første punktum $pos=strpos($test1,". ")-40; } //####### Sætter det aktuelle antal karakterer i udklippet (+1 for at få punktummet med) $aktuel_len=180+$pos+1; //####### Lægger teksten med de første ca 200 tegn over i en variabel $tekst=substr($row[tekst],0,$aktuel_len);
23. januar 2003 - 11:15
#10
Det er ovenstående kode der skal udvides så det finder første punktum efterfuldt af mellemrum og et stort bogstav.
23. januar 2003 - 11:16
#11
Det gør dette her for dig... if ($find=preg_match("/\. [A-Z]/",$test,$result)){ $pos=strpos($find,".") }
23. januar 2003 - 11:16
#12
Det bruges til en forside, hvor der hives en appetizer ud.
23. januar 2003 - 11:17
#13
Prøver det lige ;-)
23. januar 2003 - 11:18
#14
Det gør dette her for dig... if ($find=preg_match("/\. [A-Z]/",$test,$result)){ $pos=strpos($find,".") }
23. januar 2003 - 11:22
#15
Så bude det her jo virke: //####### Klipper et stykke tekst ud der ligger lige fra 180 til 280 tegn inde i texten $test=substr($row[tekst],180,100); //####### Finder positionen for det første punktum hvis der er et if ($find=preg_match("/\. [A-Z]/",$test,$result))$pos=strpos($find,"."); else{ //####### Ellers klippe et større stykke tekst ud $test1=substr($row[tekst],140,300); //####### og finder igen positionen for det første punktum if ($find=preg_match("/\. [A-Z]/",$test1,$result))$pos=strpos($find,".")-40; } //####### Sætter det aktuelle antal karakterer i udklippet (+1 for at få punktummet med) $aktuel_len=180+$pos+1; //####### Lægger teksten med de første ca 200 tegn over i en variabel $tekst=substr($row[tekst],0,$aktuel_len); Men det gør det ikke.
23. januar 2003 - 11:29
#16
Stwange ..
23. januar 2003 - 11:33
#17
Så virker dit script altså ikke.
23. januar 2003 - 11:36
#18
Ahhh, min fejl.... $test=substr($row['tekst'],180,100); if ($find=preg_match("/\. [A-Z]/",$test,$result)) { $pos=(int)strpos($test,"."); } else{ $test1=substr($row['tekst'],140,300); if ($find=preg_match("/\. [A-Z]/",$test1,$result)) { $pos=(int)strpos($test1,".")-40; } } $aktuel_len=180+$pos+1; $tekst=substr($row['tekst'],0,$aktuel_len);
23. januar 2003 - 11:44
#19
Prøv at sætte variablen til:
$row[tekst] = "Dansk Brætsejler Organisation ønsker at forny deres ansigt udadtil, hvorfor de indbyder alle kreative sjæle til at komme med et forslag til et nyt logo, som skal benyttes på deres website
www.dbo.dk samt i forbindelse med ca. alt tryk på alt officielt papir."
Den er altså heller ikke god nok ... :-)
23. januar 2003 - 11:45
#20
Den skal jo ikke stoppe ved ca. med ved papir, idet der kommer et stort bogstav bagefter :)
23. januar 2003 - 11:46
#21
med = men
23. januar 2003 - 11:48
#22
Så den virker faktisk heller ikke ;)
23. januar 2003 - 11:58
#23
tsk tsk, det er sgu svært at få øje på, hvor den er gal
23. januar 2003 - 12:02
#24
Ahhh, nu er jeg med... Here goes:
$row['tekst'] = 'Dansk Brætsejler Organisation ønsker at forny deres ansigt udadtil, hvorfor de indbyder alle kreative sjæle til at komme med et forslag til et nyt logo, som skal benyttes på deres website <a href="
http://www.dbo.dk" target="_blank">
www.dbo.dk</a> samt i forbindelse med ca. alt tryk på alt officielt papir. Mere tekst her...';
$test=substr($row['tekst'],180,100);
if ($find=preg_match("/\.\ [A-Z]./",$test,$result)) {
$pos=(int)strpos($test,$result[0]);
} else{
$test1=substr($row['tekst'],140,300);
if ($find=preg_match("/\.\ [A-Z]./",$test1,$result)) {
$pos=(int)strpos($test1,$result[0])-40;
}
}
$aktuel_len=180+$pos+1;
$tekst=substr($row['tekst'],0,$aktuel_len);
23. januar 2003 - 12:09
#25
Får du det til at virke? Jeg gør ikke... tsk tsk - problemet som der ikke var en løsning på :-)
23. januar 2003 - 12:16
#26
Hvis jeg kører overstående kommer $tekst til at inholde:
string(306) "Dansk Brætsejler Organisation ønsker at forny deres ansigt udadtil, hvorfor de indbyder alle kreative sjæle til at komme med et forslag til et nyt logo, som skal benyttes på deres website
www.dbo.dk samt i forbindelse med ca. alt tryk på alt officielt papir."
23. januar 2003 - 12:16
#27
Prøv det efter, det virker ikke :-(
23. januar 2003 - 12:17
#28
Ja sgu!!
23. januar 2003 - 12:19
#29
> Ja sgu!! .. som i det virker?
23. januar 2003 - 12:25
#30
Nu er min server lige nede, men det ser ud til det virker ;) Tester lige når den hopper på snarrest.
23. januar 2003 - 12:33
#31
Coolburger - held og lykke med det...
23. januar 2003 - 12:35
#32
Dit virker perfekt, men det virker ikke når jeg sætter ind i resten af mit script. Jeg må snart lære det.
23. januar 2003 - 12:47
#33
Thanx :)
23. januar 2003 - 13:40
#34
Får du også problemer når du kører scriptet i en while løkke? <?php $result = mysql_query("SELECT * FROM data_univers ORDER BY dato DESC LIMIT 0,4"); $number = mysql_num_rows($result); if ($number > 0) { while($row = mysql_fetch_array($result)) { $test=substr($row['indhold'],180,100); if ($find=preg_match("/\.\ [A-Z]./",$test,$resultat)) { $pos=(int)strpos($test,$resultat[0]); } else{ $test1=substr($row['indhold'],140,300); if ($find=preg_match("/\.\ [A-Z]./",$test1,$resultat)) { $pos=(int)strpos($test1,$resultat[0])-40; } } $aktuel_len=180+$pos+1; $indhold=substr($row['indhold'],0,$aktuel_len); $indhold=eregi_replace("<br>", " ", $indhold); print "<p>$indhold</p> <p><a href=\"univers/?uni=$row[univers]&id=$row[id]\">Læs mere...</a></p> <p> </p>"; } } ?>
23. januar 2003 - 13:41
#35
Jeg lan simpelthen ikke få det til at funke i løkken??! Udenfor løkken virker det fint. Kan ikke se hvad der skulle give problemer?
23. januar 2003 - 13:57
#36
Nu kan jeg ikke lave while løkken da jeg ikke har dine data men nedenstående virker med disse data:
$row['indhold'] = 'Dansk Brætsejler Organisation ønsker at forny deres ansigt udadtil, hvorfor de indbyder alle kreative sjæle til at komme med et forslag til et nyt logo, som skal benyttes på deres website <a href="
http://www.dbo.dk" target="_blank">
www.dbo.dk</a> samt i forbindelse med ca. alt tryk på alt officielt papir. Mere tekst her...';
$row['id']=138;
$row['univers']='ipsum_lorem';
Prøv dette i din while løkke...
<?php
$test=substr($row['indhold'],180,100);
if ($find=preg_match("/\.\ [A-Z]./",$test,$resultat)) {
$pos=(int)strpos($test,$resultat[0]);
} else{
$test1=substr($row['indhold'],140,300);
if ($find=preg_match("/\.\ [A-Z]./",$test1,$resultat)) {
$pos=(int)strpos($test1,$resultat[0])-40;
}
}
$aktuel_len=180+$pos+1;
$indhold=substr($row['indhold'],0,$aktuel_len);
$indhold=eregi_replace("<br>", " ", $indhold);
print "<p>$indhold</p>
<p><a href=\"univers/?uni=$row[univers]&id=$row[id]\">Læs mere...</a></p>
<p> </p>";
?>
23. januar 2003 - 14:31
#37
Prøv så med denne: $row['indhold'] = 'Underskuddet på budgettet for den amerikanske stat er på vej mod 300 milliarder dollar, hvilket svarer til 2,1 billioner danske kroner eller knap 100 storebæltsbroer. <br>I onsdags sagde præsident George Bush? budgetdirektør Mitchell Daniels i følge Berlingske Tidende';
23. januar 2003 - 14:32
#38
Så er den gal.
23. januar 2003 - 14:46
#39
Det er fordi der kommer et <br> efter punktummet.... Du skal bruge dette regexp istedet: "/\.\ [A-Z\n\<]./" Hvor laver du det ikke bare om til et punktum og et mellemrum??
24. januar 2003 - 12:19
#40
Fordi så tages der ikke højde for: eks. fx. ca. og andre forkortelser ;-)
24. januar 2003 - 12:31
#41
Den reagere kun på punktum efterfulgt af store bogstaver, linieskift, eller "<"...
24. januar 2003 - 12:34
#42
Skal jeg droppe det så?
24. januar 2003 - 12:36
#43
og nøjes med punktum efterfulgt af mellemrum?
Vi tilbyder markedets bedste kurser inden for webudvikling