echo ($col); извежда стринга до първия пробел

12 отговора 194 прегледа
#1

echo ($col); извежда стринга до първия пробел

echo ($col); извежда стринга до първата празна позиция
В темата е много кратко.

Значи имам си ОК връзка с MySQL и искам в една форма да изведа полетата от някой запис. В дебъгера си (PHP Exper Debuger на PHP Expert Editor) променливата $col на реда echo ($col) се вижда цялата (нещо като 'НУ "Хр.См"'), но във формата в текстовото поле се извежда само 'НУ'

foreach ($line as $col) {
?>
<form action=TestForm2c.php method=get>
<input type=text size=20 name="Text1" maxlength=10 value=
<?PHP
echo ($col);
?>
>
</form>
<?PHP


Пробвах да го потърся в документацита, а след това и да му сложа някакви разделители, но не успях да го налучкам :)

Отговор
в отговор на NikB #2

Re: echo ($col); извежда стринга до първия пробел

В отговор на:


'НУ "Хр.См"'



виж си кавичките

Отговор
в отговор на s_dimi #3

Е и

Видях ги, но не разбрах отговора ти. Написал съм, че в полето на MySQL таблицата пише
'НУ "Хр.См"',
сега пояснявам, че литералите са разделители в моя текст, а в полето пише само:
НУ "Хр.См"

Какъв им е проблема на кавичките ми?

Отговор
в отговор на NikB #4

Re: Е и

проблема е, че се получава следния ХТМЛ:

<input ...blabla... value="НУ "Хр.См"">,

което ще рече, че валуе-то приема стойност "НУ "
едно от решенията е да направиш:

$value=str_replace('"', """, $value)
и няма да имаш грижи...
(кавичката съм я боядисал в червено за да се види)

Just a genius

Отговор
в отговор на Blake #5

Re: Е и

Коректното решение не трябва ли да включва прекарване през htmlentities? То ще замени кавичката с " и ще си в джаза.

Ей все забравям, че дира ще ми обърне & quot; (без интервал) на ".

--
"Agile is a mindset, not a set of practices, rules, or tools."
Tom Poppendieck

Редактирано от Mycлoн на

Отговор
в отговор на NikB #6

Re: echo ($col); извежда стринга до първия пробел

Не е echo-тo , а HTML-то
То ти извежда до първа празна позиция. Ако не искаш да е така загради стринга на VALUE-то в апострофи и пусни стринга от РНР-то с addslashes
т.е.:
<input type=text size=20 name="Text1" maxlength=10 value='
<?PHP
echo addslashes($col);
?>
'>

root@localhost#cd /pub
root@localhost#more beer
Отговор
в отговор на NikB #7

Re: Е и

echo "Escaping characters is done \"Like this\".";

Отговор
в отговор на ro6avia #8

Re: echo ($col); извежда стринга до първия пробел

Изглежда логично, но когато го пробвах, в дебъгера изглежда нормално (за мен):

<input type=text size=40 name="Text1" maxlength=40 value=
НУ \"Нещо си\">

но съдържанието на полето отново е до първия пробел.
(Пробелът май не е вкл, щото не се маркора с мишката)

Отговор
в отговор на Blake #9

Парсерна ме

Ако втория аргумент са 3 кавички ("), както си написал - казва
Parse error: parse error, unexpected '"' in ...
Ако са 4:
Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING in...
Ако са две - няма грешка, но няма и ефект.

Отговор
в отговор на Mycлoн #10

На кое казваш кавичка?

" - кавичка;
' - апостроф

Отговор
в отговор на NikB #11

Re: echo ($col); извежда стринга до първия пробел

А загради ли цялото VALUE със апострофи както ти бях казал ?
value=
'
НУ \"Нещо си\"
'
>

root@localhost#cd /pub
root@localhost#more beer
Отговор
в отговор на NikB #12

Re: echo ($col); извежда стринга до първия пробел

а бе хора кви са тия ескейпи и т.н. има си функция за тази работа и тя няма нищо общо с ескейпите

[линк]

NikB, научи се да ползваш " в хтмл-то

тва не е никак добре написано!!
<form action=TestForm2c.php method=get>
<input type=text size=20 name="Text1" maxlength=10 value=
<?PHP
echo ($col);
?>
>
</form>


трябва да е

<form action="TestForm2c.php" method="get">
<input type="text" size="20" name="Text1" maxlength="10" value="<?=htmlspecialchars($col)?>">
</form>

освен това можеше да видиш с View Source какво всъщност си получил и да откриеш проблема

също така, това ми се видя част от цикъл (един foreach се мъдреше там)

ама такъв цикък ще отпечата N на брой форми с по един инпут в тях и после за нищо няма да може да ги ползваш смислено!!

Отговор
в отговор на phpGuru #13

10x

Благодаря, върви.
Ще видя къде са разликите.

А за цикъла - все някъде ще сложа уникални идентификатори, за да имам достъп до стойностите на всяка променлива :) - това сега не ми е проблем

Отговор