PDA

Bekijk Volledige Versie : str_replace()



Bullcat
17/05/07, 18:51
Hallo, ik kom er even niet uit hier.

Ik krijg met $_POST 3 namen binnen, tussen die namen staan spaties, dus bijvoorbeeld: Jan karel Piet

$string = 'jan karel piet';

nu probeer ik met str_replace(' ' , ';' , $string) die blanco spaties te vervangen door puntcomma's.

Maar helaas werkt het niet als ik de a laat vervangen door ; werkt het wel ( in jan en karel ) maar die spatie dus niet :(

Iemand een oplossing voor mij ?

Hans

eweps
17/05/07, 18:54
probeer ipv de spatie eens:  

Wat je uiteindelijke doel? Elk stuk in een aparte variabele plaatsen kan zo:

<?php
$var = explode("&nbsp;", $_POST);

echo 'Voornaam: '.$var[1];
?>

GlennMatthys
17/05/07, 19:05
hmm normaal zou bij $_POST die dingen niet mogen vertaald worden naar &nbsp; Welk resultaat krijg je als je een print_r($_POST) doet?

Bullcat
17/05/07, 19:05
Wel ik ben het wiel opnieuw aan het uitvinden hier.

Ik wil een bulk functie voor het controleren van domeinnamen.

ik vraag dus met een form schermpje dus invoer van meerdere domeinnamen op elke domeinnaam op een nieuwe regel.

Die invoer moet ik doorsturen met een API waarbij de domeinnamen dus gescheiden moeten worden met ; , en ik krijg uit het form een spatie retour dus dacht ik die even snel te vervangen met str_replace() maar mooi dat het niet werkt zoals ik wil :(

Btw &nbsp; wil ook niet werken hier.

Nog een andere oplossing ?

dit werkt dus niet hier ( echo str_replace('&nbsp', ';',$_POST["domains"]); )

Hans


hmm normaal zou bij $_POST die dingen niet mogen vertaald worden naar &nbsp; Welk resultaat krijg je als je een print_r($_POST) doet?

Ik krijg hier dus : Array( [domains] => naam1.ltd naam2.ltd naam3.ltd )

eweps
17/05/07, 19:14
Doe eens wat glenn zei en mocht dat niet baten probeer dit eens:

<?php
echo str_replace(" ", ";", $_POST["domains"]);
?>

Of anders:

<?php
echo str_replace("&nbsp;", ";", htmlspecialchars($_POST["domains"]));
?>

jurrian
17/05/07, 19:16
Even voor de duidelijkheid: de invoer is op meerdere regels, en je wilt de spaties vervangen door een ;? is het niet juist zo dat je de \n (of \r\n) wilt vervangen door een ; ?

crazycoder
17/05/07, 19:18
Wat gebruik je om de namen in te voeren?

$watjijwil=ereg_replace(' ',';',$_POST{'domains'});
zou gewoon moeten werken.

Ik vermoed dat jij een textarea gebruik, dan krijg je een nieuwe regel en geen spatie:)

Bullcat
17/05/07, 19:26
Ik gebruik inderdaad een text area voor de invoer van die namen !

quick and durty dit dus :

<FORM method="post" action="DOS_bulk.php?a=submit_bulk">
<TEXTAREA cols="30" rows="10" name="domains" style="width:250px"></TEXTAREA>

<BR><BR>
<INPUT type="submit" value="verstuur">
</FORM>

om even verderop in dat bestand erg veel testen te hebben staan die geen van allen het juiste terug geven !

echo str_replace("&nbsp;", ";", htmlspecialchars($_POST["domains"]));
echo str_replace(" ", ";", $_POST["domains"]);
print_r($_POST) ;
echo $_POST["domains"] ;
$var = explode("&nbsp;", $_POST["domains"]);
$a = ' ';
$b = ';';
$c = $_POST["domains"];
echo str_replace($a, $b, $c) ;
echo str_replace($a,$b,$_POST["domains"]);
echo str_replace('&nbsp', ';',$_POST["domains"]);


maar al wat ik zie zijn spaties :(

crazycoder
17/05/07, 19:28
$domains=str_replace(chr(10), ";", $domains);
$domains=str_replace(chr(13), ";", $domains);

&nbsp kan je wel vergeten, werkt afaik niet.

werk het nog even af met:
$domains=ereg_replace(' ',';', $domains);

Bullcat
17/05/07, 19:30
Bingo we komen er wel dankzij een beetje hulp van jullie :D

echo str_replace("\r\n", ";", $_POST["domains"]);

en het werkt !

Dank u.

Hans

blaaat
17/05/07, 19:40
Is het soort enter wat wordt meegegeven niet afhankelijk van het OS?
De \r\n kan geloof ik ook gewoon \r of \n zijn.

crazycoder
17/05/07, 19:51
Mis ook nog een stukje regular expressions om eventuele rommel uit de input te halen..

Bullcat
17/05/07, 21:03
Mis ook nog een stukje regular expressions om eventuele rommel uit de input te halen..

Ik snapte niet wat je hiermee bedoelde, tot ik een extra enter gaf op het eind van de invoer en vervolgens een error terug kreeg van de API.

Maar hoe ruim ik nu die overtollige enter op aan het eind ervan, ik ben ook maar van de pascal tijd, en in php werkt het links en rechts even wat anders :)

crazycoder
17/05/07, 21:08
$domains=trim($domains);

http://nl3.php.net/manual/nl/function.trim.php

Bullcat
17/05/07, 22:58
Dank je Crazy, het werkt allemaal, nu de afwerking nog :)

wonko
18/05/07, 09:23
Nu nog veel afwerking, want je kan nog altijd eender wat meegeven... Best even gewoon met een regex werken, en elke domeinnaam erdoorheen halen, en zien dat ie matcht. Dat kan allemaal mooi in 1 commando met een preg_match_all.

Bullcat
18/05/07, 10:26
Oe hee wonko niet te moeilijk maken hoor, als ze klooien krijgen ze netjes terug dat hun geklooi nog vrij is :D