webForumDet fria alternativet

problem med tags inom php och mysql

6 svar · 462 visningar · startad av alioooop

alioooopMedlem sedan feb. 2008120 inlägg
#1

hej
jag har ett problem som ingen jag känner lyckas lösa :l
det är så att jag försöker göra en tag-funktion men har fastnat totalt!

$tags = "dsd dsdddd sdsdddsd d dsdddd";

$wordChunks = explode(" ", $tags);
for($i = 0; $i < count($wordChunks); $i++){
echo "<a href=\"search.php?q=$wordChunks[$i]\">$wordChunks[$i]</a> ";
}

när jag skriver så där så funkar det och den tar ut varje ord för sig med hjälp av att kolla upp vars det finns mellanslag och gör om varje ord till en länk!

men skriver jag:

$tags = $row['Tags'];

$wordChunks = explode(" ", $tags);
for($i = 0; $i < count($wordChunks); $i++){
echo "<a href=\"search.php?q=$wordChunks[$i]\">$wordChunks[$i]</a> ";
}

så tar den ut hela textfrasen som finns inne i databasen som en länk precis som om databasen har ett annat tecken än ett vanligt mellanslag när man hämtar från den!
jag har tom testat ändra så att den ska göra om alla ord som finns på vardera sida om a till länkar och då funkar det! så det måste vara nått med just mellanslagen!
så vad ska jag göra för att den ska kunna hitta av mellanslagen och sedan göra om varje ord till en länk?

HJÄLP någon

stevenetMedlem sedan juni 20001 251 inlägg
#2

Vad skriver <?php var_dump($tags); ?> ut?

alioooopMedlem sedan feb. 2008120 inlägg
#3

stevenet skrev:

Vad skriver <?php var_dump($tags); ?> ut?

den skriver ut string(10) "anton ali"

har två ord i den!

stevenetMedlem sedan juni 20001 251 inlägg
#4

alioooop skrev:

den skriver ut string(10) "anton ali"

har två ord i den!

<?php

$tags = "anton ali";
var_dump($tags);
?>

Ger string(9) "anton ali". Har du kollat så du inte separerar med tabbar eller något?

aasahMedlem sedan mars 20034 471 inlägg
#5

Nästa gång du postar kod, var snäll och använd [ php][ /php] (fast utan mellanslag) så blir koden mycket lättare att läsa!

Tre funderingar:

  1. Vad ger
echo $row['Tags'];

för resultat?

  1. Om det ser bra ut, vad händer om du kopierar det mellanrum som skrivs ut och klistrar in det i explode-uttrycket?

  2. Vad händer om du går in i databasen och explicit skriver in mellanslag på "tomrummens" plats för de första raderna. Blir det skillnad?

alioooopMedlem sedan feb. 2008120 inlägg
#6

aasah skrev:

Nästa gång du postar kod, var snäll och använd [ php][ /php] (fast utan mellanslag) så blir koden mycket lättare att läsa!

Tre funderingar:

  1. Vad ger
echo $row['Tags'];

för resultat?

  1. Om det ser bra ut, vad händer om du kopierar det mellanrum som skrivs ut och klistrar in det i explode-uttrycket?

  2. Vad händer om du går in i databasen och explicit skriver in mellanslag på "tomrummens" plats för de första raderna. Blir det skillnad?

  1. det ger "anton ali"

  2. det blir exakt ingen skillnad! den hittar fortfarande inget

  3. nu hittade jag felet! det var tydligen ett mellanslag och sen ett enter slag! konstigt eftersom att inputrutor inte klarar av enterslag

itpastornMedlem sedan feb. 2007278 inlägg
#7

alioooop skrev:

Det var tydligen ett mellanslag och sen ett enter slag! konstigt eftersom att inputrutor inte klarar av enterslag

1. Du kan inte förlita dig på detta på något sätt. En användare kan skicka vilka tecken som helst, inklusive newline, carriage return och null! Du behöver validera din indata på servern.

2. Din loop kan förbättras betydligt. Nu kommer du köra count() vid varje iteration. Kolla foreach i stället.

131 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)