如果它包围一个单词,我想从PHP变量 中删除任何美元符号($)。
我知道如何用空格替换每个$看起来像被删除,例如:
<?php
$string = 'Hello $George$';
$string = str_replace('$', '', $string);
echo $string; // Prints: Hello George
?>
但上面的代码也删除了不包含单词的$,例如:
<?php
$string = 'Hello $George$, are you $ok?';
$string = str_replace('$', '', $string);
echo $string; // Prints Hello George, are you ok?
?>
我已经尝试了很长时间来解决这个问题,但没有设法解决它,任何帮助都表示赞赏。
答案 0 :(得分:10)
首先,我将回答您的问题
使用preg_replace
代替,即使用仅检测围绕单词的那些美元符号的模式。
$string = preg_replace('/\$(\w+)\$/', '$1', $string);
现在改进了代码
正如您的问题评论中所提到的,您需要使用单引号('
)来包围字符串,以防止PHP将带有前缀为美元符号的单词替换为相应的变量。
可以找到理解双引号和单引号字符串之间差异的良好来源from this question。