2013-07-12 2 views
-2

Я создаю функции фида на своем веб-сайте, где пользователи могут выполнять действия.

Я храню различные действия сообщения как

{item:$user} added {var:$count} photo(s) to the album {item:$album_name} 

в базе данных, потому что я получить различные сообщения действий во время выполнения.

Так что, когда я использую str_replace, как

$body = "{item:$user} added {var:$count} photo(s) to the album {item:$album_name}"; 

$body = str_replace("{item:$user}",$userName,$body); 

Его не заменяет текст и отображения, как это, но когда я удалить «$ USER}» его замена строки «{пункт: ».

Есть ли проблема в моем сценарии, или я должен использовать какой-то специальный метод.

Спасибо.

+0

-1 потому, что задавать вопросы на SO требует минимального понимания этой темы , Как можно что-то кодировать в PHP без базовых знаний об этом? Имея '$ blah =" что-то ",' последующая строка '' $ blah aaa "' будет меняться на '' что-то aaa "'. Используйте одиночные кавычки '' $ blah aaa'', чтобы сохранить эту строку нетронутой. – ElmoVanKielmo

ответ

1

Вместо того, чтобы сделать это:

var $s = "$variable inside a string" 

просто сделать это (одиночные кавычки):

var $s = '$variable inside a string' 

Таким образом, он не заменит переменную в строку с ее значением. Когда вы используете двойные кавычки, переменная внутри вашей строки будет заменяться ее значением.

0

Используйте одинарные кавычки:

$body = str_replace('{item:$user}',$userName,$body); 
2

Когда PHP разбирает свой str_replace заявление, так как ваш «{пункт: $ пользователя}» находится в двойных кавычках, PHP будет пытаться оценить обе переменные и функции в строке перед тем возвращая строку. Поэтому он ищет $ user, думая, что это переменная. Попробуйте заменить двойные кавычки одиночными кавычками и посмотреть, что это делает.

Я бы также предложил сделать ваш шаблон заполнителей проще, вы просто используете строку заменить иглой жестко закодированы. В вашем примере {user} также будет работать вместо {var: $ user}. Или изменить метод замены, чтобы воспользоваться множеством деталей заполнителей

+0

Спасибо @ Robert замена двойной кавычки на одиночные кавычки. – Dinesh

+0

Сладкий, отмечающий меня как ответ, очень ценный, спасибо –

0

Я также собираюсь дать вам те же ответы, как и другие:

$var = 'EXAMPLE'; 
// double quotes take a string with variables, but interprents them 'gently' 
echo " this is $var "; // will result in [ this is EXAMPLE ] 

// Single quotes all a litteral string. This means it will not _parse_ the values (or functions) 
echo ' this is $var '; // will result in [ this is $var ] 

// If you want the dolarsign AND doublequotes, you have to escape 
echo " this is \$var "; // will result in [ this is $var] 
+0

ваш ответ не учитывал одинарные кавычки – DevZer0

+0

Спасибо, исправлено. Пример singlequote теперь имеет одинарные кавычки – Martijn

Смежные вопросы