php guru här?

Swedie

Administrator
Personal
Gick med
6 Mar 2003
Ort
Stockholm-ish
Hoj
Yamaha R1
Jag vet inte vad jag gör fel just nu... jag bygger på en ny sajt jag kommer presentera snart. Den är yyyyberhemlig. :) så jag kan inte visa någon kod.

men vad det handlar om är att jag ska dela upp ett värde i arrays efter radbrytningar i värdet:

PHP:
$varden = explode("\n", $row['varde']);

Nu så får jag följande i HTML-koden:

<select name=""><option value="2004
"> 2004
</option><option value="2003
"> 2003
</option><option value="2002
"> 2002
</option><option value="2001
"> 2001
</option><option value="2000"> 2000</option></select>

array-värdet har alltså fortfarande radbrytningen kvar!

Använder jag fel kod? Jag kan inte ens efteråt ta bort radbrytningen med
PHP:
str_replace("\n", "", $varde);

Varför?
 
Använder jag fel kod? Jag kan inte ens efteråt ta bort radbrytningen med
PHP:
str_replace("\n", "", $varde);

Varför?

Testa att göra en fuling och typecasta värdet då?!
$myinteger = (integer)$mystring
Sen skriver du ut integern istället?! kan inte det funka?
 
2765823 Testa att göra en fuling och typecasta värdet då?!
$myinteger = (integer)$mystring
Sen skriver du ut integern istället?! kan inte det funka?
förstår faktiskt inte...

men ett förtydligande från min sida.

i tabellen så är värdet

rad 1
rad 2
rad 3
rad 4

osv

jag vill sätta varje rad i en array

jag gör det med

$array = explode("\n", $tabellvarde);

men den behåller radbrytningen!! blir ju fel värde då...


testade just även :

$array = split("\n", $tabellvarde);

samma sak där... wåfan!
 
Last edited:
testade just även :

$array = split("\n", $tabellvarde);

samma sak där... wåfan!

Du gör alltså likadant men låter radbrytningen hamna i arrayen. Sedan när du loopar igenom den och skriver ut den typecastar du värdet i varje post i arrayen vid utskrift... Eftersom du skriver att den ska typecasta till integer tror jag att den tar bort kontrolltecknen(/n)...

(förkortat exempel)

echo "<option value="{$(integer)$array}">"{$(integer)$array}"</option>"
 
Last edited:
förstår inte faktiskt. kan inte sådant där...

jag har iaf upptäckt att det är mysql_querien som lägger till en radbrytning på vartenda värde som läggs i min array av värde...
 
förstår inte faktiskt. kan inte sådant där...

jag har iaf upptäckt att det är mysql_querien som lägger till en radbrytning på vartenda värde som läggs i min array av värde...

Jag är rätt kass på PHP så det är lite av en chansning..

"typecast"(oavsett språk) betyder att man bestämmer vilken typ man vill att vist värde skall vara av. Uppenbarligen är dina värden i arrayen strängar för annars skulle de aldrig kunna innehålla en radbrytning. Om du då "tvingar" dem att istället bli "integer" alltså enbart siffror så var min tanke att radbryten skulle försvinna.
Min idé var att låta radbrytningen ligga kvar i arrayen men att försöka bli av med det när du sedan läser värdena för att skriva ut dem på sidan....
 
Last edited:
nu är det så att värdena inte alltid är nummer.

jag har nu upptäckt att det som sagt går djupare än felkodning...

dessa radbrytningar läggs till vid läsning från databasen... eller så är php fuckat... men asså.. äääh
 
Varför sparar du det med radbrytningar i databasen till att börja med? Om du nu har en rad som du sedan vill ha "flera" alternativ till så borde du ha det i en till tabell.

Men om du vill spinna vidare på din idé, så explodea på "\n" och sedan trimmar du varje värde i arrayen, antingen när du skriver ut det, eller genom att köra tex array_walk (jävligt ful lösning men...)

Eller så loopar du igenom arrayen och definerar om den och kör trim samtidigt.

exempel:

Code:
$sträng = "foo1\r\nfoo2\r\nfoo3\r\nfoo4";

$array = explode("\n", $sträng);

array_walk($array, 'trim');

trim() tar alltså bort alla whitespaces (vilket inkluderar spaces, radbrytningar, tabbar mm) före och efter en sträng, men inte de inuti en sträng.

array_walk-grejen motsvarar att köra tex:

foreach($array AS &$row) {
$row = trim($row);
}

&-tecknet gör att du jobbar med en referens till själva värdet i den befintliga arrayen, utan den skulle det bli en kopia på elementet och därmed skulel den befintliga arrayen vara orörd. Möjligt att jag blandat ihop det och du måste köra &-tecknet på $array istället, eller både och, men orkar inte testa det själv.

Men jag tycker att du starkt ska överväga en till tabell. Det vore en bättre lösning, och det är ju hela poängen med relationsdatabaser.
 
När du lägger till information i databas skall du encoda. Då blir det lättast att hålla reda på skiten. Så gör jag iaf.

Är det radbrytet du kan ta bort kan du ju byta ut "" mot vad enter heter i PHP


Använd RegExp

eller prova med
$string = str_replace("\r", "", $string);
$string = str_replace("\n", "", $string);

Ta bort allt sådant tjaffs innan du lägger in i databasen. Bättre att göra formen säker eller vartifrån du får inputen. :)

annars kan du köra en mysql_query som uppdaterar nuvarande lines och tar bort de breaksen du inte vill ha med.
ps. inte codat php på 5 år så vet inte
om det stämmer fortf.
 
Last edited:
Nyheter
Yamaha R7-vinnarens rapport: ”Ett riktigt monster på kurviga landsvägar!”

På MC-mässan i vintras anor...

Nisse Hedlund bortgången

Den legendariske motorkonst...

En dag på dragstrippen

Efter att ha varit aktiv so...

Steve McQueens Scott Squirrel till salu

Detta Scott Flying Squirrel...

Dags för Strängnäs Bike Show!

Sista lördagen i augusti är...

Bikeweekend på Kjula denna helg

Den 22-23 augusti är det da...

Motorcycle Inferno #8

Den 5 september blir Laxhol...

Tiotusentals körde Mälaren Runt

Lördagen den 15 augusti gen...

Mälaren Runt fyller 40 år

Nu på lördagen den 15 augus...

Steve Holcombe klar för GGN!

Pressmeddelande 2026-08-10 ...

Back
Top