2011-06-02 2 views
0

Я знаю, что это действительно очевидно, но я просто не знаю, чего мне не хватает.escaping string - php in html element

$option[] = "<option value='user' selected=' " . ($row[5]=='admin') ? echo 'selected' : null. "'>user </option>";` 

благодарит

+0

В чем вопрос? – Stephen

+1

В чем проблема? '' 'не нужно экранировать в строке двойной кавычки. –

+0

Я продолжаю получать ошибку синтаксического анализа – dgamma3

ответ

2

Попробуйте это:

$option[] = '<option value="user" . ($row[5]=='admin' ? 'selected' : '') . '>user </option>';` 

Три отличие от кода:

  1. Я обращенное ваше использование цитат ... проще обернуть PHP строку, содержащую HTML в одинарных кавычках (так как HTML использований двойные кавычки).
  2. Я изменил круглые скобки вокруг вашего тернарного оператора ... это было обернуто только вокруг условия, а не значения true/false return.
  3. В вашем «истинном» возвращаемом значении в тройной операции вы вызывали echo, что не обязательно в операции конкатенации.
+0

Удивительно, что это сработало, однако почему твоя работа не моя? пожалуйста, объясните – dgamma3

+1

@ dgamma3: Потому что вы не можете использовать 'echo' там. –

+0

обновил мой ответ, чтобы указать на различия. –

2

Вам не нужно писать

value=\'user\' 

Вобще

value='user' 

Мнемонизация необходима, когда вы используете одни и те же кавычки, как:

echo 'Mark\'s dinner'; 
0

Для начала, я сломаю его. Кроме того, поменяйте свои двойные кавычки на одинарные котировки:

$option[] = implode('', array(
    '<option value="user" selected="', 
    $row[5] == 'admin' ? 'selected' : '', 
    '">user</option>' 
));