(PHP/Wordpress) Легко удалять символы, но не «$», когда строка выводится из шорткода

ПРИМЕЧАНИЕ. Я ответил на свой вопрос ниже, но все равно публикую его для того, чтобы кто-то в моей ситуации узнал...


Это сводит меня с ума.

Вот сценарий. Здесь есть миллион вопросов об удалении символов, таких как «$», из простых строк (например, $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' ($ не удалено)

Использование того же кода для другого символа (например, «.») работает отлично. Например.

$finalprice = str_replace('.','',$rawpriceOUT);

И вывод будет: «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>

ХОРОШО. Так что либо мне нужно использовать & # 3 6 ; вместо $, или я могу оперировать всей этой кутерьмой, чтобы получить свои 10.00. Блин.


person Simon Stewart    schedule 10.03.2017    source источник
comment
Опубликуйте ответ в разделе answer, а не как часть вопроса.   -  person chris85    schedule 10.03.2017


Ответы (1)


Подтверждено, что простая замена '$' на '& # 3 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');
person Simon Stewart    schedule 10.03.2017