(PHP/Wordpress)轻松删除字符,但不'$';当字符串是短代码的输出时

(PHP/Wordpress)轻松删除字符,但不'$';当字符串是短代码的输出时,php,wordpress,str-replace,shortcode,Php,Wordpress,Str Replace,Shortcode,注意:我已经回答了下面我自己的问题,但还是把这个贴出来,让我这种情况下的其他人学习… 这快把我逼疯了 下面是一个场景。关于从简单字符串(例如,$string='$10.00')中删除像“$”这样的字符,这里有一百万个问题,我可以做得很好 然而。。。当字符串源于短代码输出时(例如,$string=do_shortcode($mycode),我就是做不到。我可以删除1、0和.,但$不会移动 注意:我使用的短代码是“Wordpress货币切换器”(wpcs_price)。我的新手思维告诉我,问题是我

注意:我已经回答了下面我自己的问题,但还是把这个贴出来,让我这种情况下的其他人学习…


这快把我逼疯了

下面是一个场景。关于从简单字符串(例如,
$string='$10.00'
)中删除像“$”这样的字符,这里有一百万个问题,我可以做得很好

然而。。。当字符串源于短代码输出时(例如,$string=do_shortcode($mycode),我就是做不到。我可以删除1、0和.,但$不会移动

注意:我使用的短代码是“Wordpress货币切换器”(wpcs_price)。我的新手思维告诉我,问题是我的字符串根本不是字符串,而是活代码或某种我不懂的奇怪数组类型

例如

function justwork() {
$rawprice = 10.00;
$rawpriceSC = '[wpcs_price value=\''.$rawprice.'\']'; 
$rawpriceOUT = do_shortcode($rawpriceSC); /* This will output $10.00 */
$finalprice = str_replace('$','',$rawpriceOUT);
echo $finalprice;
}

add_shortcode('justwork', 'justwork');
这将导致:

“$10.00”
(未删除$10)

在不同的字符(例如“.”)上使用相同的代码效果很好。 例如

输出将是: ‘1000元’

美元就是不动。我试过substr、trim、preg等很多东西,很快我就意识到一切都不像看上去的那样,它承载着一些负担。所以我尝试捕获输出缓冲区,但结果字符串的行为仍然很奇怪

任何帮助…哦,天哪,拜托,这件事让我发疯了

回答

在回顾所有我看过的方法时,有一种方法我没有想到

echo htmlentities($finalprice);
猜猜这个输出是什么

<span class="wpcs_price" id="wpcs_58c296db36aa3" data-amount=10 ><span class="wpcs_price_symbol">&#36;</span>10.00</span>
$;10.00

好的。所以要么我需要用 6;而不是$,要么我可以对整个混乱进行操作,得到我的
10.00
.Geeze。

确认,只需将“$”替换为“ 6;”(删除空格)就可以了

function justwork() {
$rawprice = 10.00;
$rawpriceSC = '[wpcs_price value=\''.$rawprice.'\']';
$rawpriceOUT = do_shortcode($rawpriceSC);

$price = str_replace('&#36;', '', $rawpriceOUT) ;

echo $price;

}   

add_shortcode('justwork', 'justwork');

将答案张贴在
答案
部分,而不是作为问题的一部分。
function justwork() {
$rawprice = 10.00;
$rawpriceSC = '[wpcs_price value=\''.$rawprice.'\']';
$rawpriceOUT = do_shortcode($rawpriceSC);

$price = str_replace('&#36;', '', $rawpriceOUT) ;

echo $price;

}   

add_shortcode('justwork', 'justwork');