Avatar billede michael_mortensen Nybegynder
05. december 2005 - 13:59 Der er 17 kommentarer og
1 løsning

Fjerne ord fra besked..

Jeg er ved at lave et system hvor man sender en SMS til min gateway, hvorefter jeg så kan læse beskeden på en side.

Problemet er at det keyword der dirrigerer beskeden ind i den rette database kommer MED på selve siden jeg ser det på..

ALtså så hver gang jeg vil se en besked der er sendt fra mobilen, så står der "test hej med dig"

Hvor test er keyword - er der nogen måde jeg kan undgå dette på?
Avatar billede jackass- Nybegynder
05. december 2005 - 14:21 #1
$text = str_replace($keyword,'',$text);
Avatar billede michael_mortensen Nybegynder
05. december 2005 - 14:24 #2
Hmn, hvis jeg nu vil fjerne ordet "test" fra hele siden, hvad gør jeg så ? :)
Avatar billede jackass- Nybegynder
05. december 2005 - 14:25 #3
Husk evt lige at fjerne det efterfølgende space (det mellem "test" og "hej") også.. :)
Avatar billede jackass- Nybegynder
05. december 2005 - 14:25 #4
Hvordan mener du? Altså de beskeder som allerede frem til nu er blevet skrevet, og gemt i databasen?
Avatar billede michael_mortensen Nybegynder
05. december 2005 - 14:29 #5
Nej, når man sender en sms til gatewayen, så bruger man nøgleordet test, for at dirrigere den hen i en database..

Jeg laver så et udtræk på en PHP side..

Men den trækker selvfølgelig også keywordet test med ud..

Så der står altså "test muhaha".. .


Keywordet står altså først i beskeden, det er altså med i beskeden.

Så jeg skal altså have fjernet ordet "test" på HELE siden.. :)

Hvis du er med?
Avatar billede jackass- Nybegynder
05. december 2005 - 14:33 #6
Jamen når du trækker værdierne (altså tekst-strengen) ud fra databasen - fra fx feltet "besked", går jeg ud fra du bruger noget lignende:

$result = mysql_query("SELECT from.....");
while ($row = mysql_fetch_array($result)) {
}

..og så gør du bare følgende inden i while løkken, for at skrive alle beskederne ud, uden "test " foran:

$result = mysql_query("SELECT from.....");
while ($row = mysql_fetch_array($result)) {
  $text = str_replace('test ','',$row['besked']);
  echo $text;
}
Avatar billede michael_mortensen Nybegynder
05. december 2005 - 14:48 #7
Den fjerner kun ordet fra den første besked ?
Avatar billede jackass- Nybegynder
05. december 2005 - 14:54 #8
Så kunne jeg godt tænke mig at se noget af din kode og tabelstruktur, for eftersom det er en while-løkke, skal den fjerne det fra hver besked den skriver ud. Det virker i øvrigt fint her hos mig..
Avatar billede michael_mortensen Nybegynder
05. december 2005 - 14:54 #9
Pyt, har fundet fejlen..Case sensetive..
Avatar billede michael_mortensen Nybegynder
05. december 2005 - 14:56 #10
Hvordan kan jeg gøre det med to ord ? ..

Den fjerner det kun hvis test er skrevet med lille forbogstav i SMSen og ikke med stort..


altså test fjernes men ikke Test
Avatar billede jackass- Nybegynder
05. december 2005 - 15:01 #11
Ah på den måde.. så bruger du bare str_ireplace() istedet.. den er ligeglad med case sensitivity.
Avatar billede michael_mortensen Nybegynder
05. december 2005 - 15:04 #12
Så får jeg fejl..
Avatar billede michael_mortensen Nybegynder
05. december 2005 - 15:04 #13
Called to undefined functon, ireplace
Avatar billede jackass- Nybegynder
05. december 2005 - 15:10 #14
Så gør sådan her..:

---------
$key1 = "test ";
$key2 = "Test ";

$result = mysql_query("SELECT from.....");
while ($row = mysql_fetch_array($result)) {
  $text = str_replace($key2,'',str_replace($key1,'',$row['besked']));
  echo $text;
}
---------
Avatar billede jackass- Nybegynder
05. december 2005 - 15:12 #15
str_ireplace() kom først med PHP 5
Avatar billede Slettet bruger
05. december 2005 - 18:26 #16
Med mindre dit keyword ikke skal kunne skrives i selve beskederne, skal du passe på med at bruge str_replace() til at fjerne det.

For eksempel: "test Dette er en test" ville blive til "Dette er en "
og endnu værre, hvad sker der mon med denne: "test Du skal bare skrive test efterfulgt af din besked"

Hvis du kunne få indlæggene skrevet i databasen uden nøgleordet som en del af selve teksten, ville det være det optimale.
Avatar billede elskermad.dk Nybegynder
05. december 2005 - 19:39 #17
<?

$streng = "TeSt Dette er en TESt!";

$array = explode(" ",$streng);
unset($array[0]);
$streng = implode(" ",$array);

echo $streng;

?>
Avatar billede jackass- Nybegynder
06. december 2005 - 08:18 #18
sandbox: korrekt nok.. her så da:

-----
$result = mysql_query("SELECT from.....");
while ($row = mysql_fetch_array($result)) {
  $text = substr($row['besked'],5); // fjerner bare de første 5 chars
  echo $text;
}
-----
Så er det som sådan også ligemeget at tjekke på keyword, for hvis beskederne allerede er gemt i databasen, må det jo betyde at de startede med "test " eller "Test ".
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