我正在尝试从字符串中删除货币符号,但是收到“未定义变量”错误。对不起,如果这是完全愚蠢的,我是新手!
<? if ($event->ticket_cost) : ?>
<? $cost = $event->ticket_cost ?>
<? $cost = preg_replace("€£$","", $cost) ?>
<?=$cost ?>
<? else : ?>
<? echo '' ?>
<? endif ?>
谢谢!
答案 0 :(得分:3)
您需要使用分隔符:
preg_replace("#€£\$#","", $cost) ?>
此外,由于$
是正则表达式中的特殊字符,因此您需要使用上面的反斜杠来转义它。
此外,您使用的是<?
,它应该是<?=
或更好<?php
,除非您没有使用任何其他专门的设置或内容。
答案 1 :(得分:1)
你有三件事是错的:
"~€£$~"
)$
是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) ?>
注意:将价格和货币存储在一个字段中不是一个好主意