2012-02-23 2 views
0

Я пытаюсь удалить символы валюты из строки, но получаю ошибку «неопределенной переменной». Извините, если это совершенно немой, я новичок!preg_replace undefined variable error

<? if ($event->ticket_cost) : ?> 
    <? $cost = $event->ticket_cost ?> 
    <? $cost = preg_replace("€£$","", $cost) ?> 
    <?=$cost ?> 
    <? else : ?> 
    <? echo '' ?> 
<? endif ?> 

Спасибо!

+0

Опубликовать всю ошибку –

+0

Вы не используете dilimiters в 'preg_replace()' –

ответ

3

Вы должны использовать delimitters:

preg_replace("#€£\$#","", $cost) ?> 

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

Также вы используете <?, это должно быть <?= или лучше <?php, если вы не используете другие специализированные настройки или прочее.

0
preg_replace("/[€£$]/","", $cost) ?> 

Примечание: хранить цену и валюту в одном поле не является хорошей идеей

1

У вас есть три вещи неправильно:

  • Отсутствующие delimiters из регулярного выражения (так и должно быть: "~€£$~")
  • $ - это переменное имя статистики в php (также в двойных кавычках), поэтому либо берите его с \: "~€£\$~", либо используйте ' (один Quot) '~€£$~'
  • $ в PCRE выражениях, ответственных за конец строки meta character для этого он должен быть экранирован так окончательное регулярное выражение будет выглядеть следующим образом: "~€£\\\$~" или: '~€£\\$~'

И еще одна вещь, почему выиграл» т вы используете «немой строка подстановки» (например strtr()), которые должны иметь более высокую производительность, и это сделает более понятным то, что вы хотите сделать, например:

$test = "sum € sum 2 £ sum 3$"; 
$repl = array(
    '€' => '', 
    '£' => '', 
    '$' => ''); 
echo strtr($test, $repl) . "\n"; 

A FAIK str_replace() будет перебирать трибовую строку 3 раза, strtr() только один раз.

+0

+1 для подробного объяснения :) – Sarfraz