2012-02-23 129 views
0

我试图从字符串中删除货币符号,但得到'未定义的变量'错误。对不起,如果这是完全愚蠢的,我是一个新手!preg_replace未定义的变量错误

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

谢谢!

+0

发布整个错误 – 2012-02-23 10:38:04

+0

您在'preg_replace()' – 2012-02-23 10:39:57

回答

3

您需要使用delimitters:

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

此外,由于$是在正则表达式的特殊字符,你需要像上面反斜杠逃脱它。

此外,您正在使用<?,它应该是<?=或更好<?php除非您没有使用任何其他专业设置或东西。

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

注:存储的价格和货币的一个领域是不是一个好主意

1

你有三件事情错:

  • 缺少从正则表达式delimiters(所以它应该是:"~€£$~"
  • $是php中的变量统计名称(也用双引号评估),所以要么用\"~€£\$~"或使用'(单QUOT)'~€£$~'
  • $是负责行结束PCRE表达meta character为此它必须转义所以最终的正则表达式看起来像:"~€£\\\$~"或:'~€£\\$~'

还有一件事,为什么赢了” T优用“愚蠢的字符串替换”(例如strtr())应该有更好的表现,它会做出更清楚自己想要做什么,例如:

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

一FAIK str_replace()只会重复3次,strtr()只有一次。

+0

+1中缺少dilimiters以获得详细说明:) – Sarfraz 2012-02-23 11:13:52