preg_replace未定义的变量错误

时间:2012-02-23 10:35:14

标签: php preg-replace

我正在尝试从字符串中删除货币符号,但是收到“未定义变量”错误。对不起,如果这是完全愚蠢的,我是新手!

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

谢谢!

3 个答案:

答案 0 :(得分:3)

您需要使用分隔符:

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

此外,由于$是正则表达式中的特殊字符,因此您需要使用上面的反斜杠来转义它。

此外,您使用的是<?,它应该是<?=或更好<?php,除非您没有使用任何其他专门的设置或内容。

答案 1 :(得分:1)

你有三件事是错的:

  • 从regexp中丢失delimiters(所以它应该是:"~€£$~"
  • $是php中的可变统计名称(也用双引号计算),因此要么使用\ "~€£\$~"转义它,要么使用'(单引号){ {1}}
  • '~€£$~'在PCRE表达式中为meta character,因此必须对其进行转义,以便最终的正则表达式如下:$或:"~€£\\\$~"

还有一件事,为什么你不会使用“哑字符串替换”(例如strtr())哪个应该有更好的性能,它会更清楚你想做什么,例如:

'~€£\\$~'

AFAIK $test = "sum € sum 2 £ sum 3$"; $repl = array( '€' => '', '£' => '', '$' => ''); echo strtr( $test, $repl) . "\n"; 将通过字符串迭代3次,str_replace()只需一次。

答案 2 :(得分:0)

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

注意:将价格和货币存储在一个字段中不是一个好主意