2017-08-27 67 views
2

我有一個包含內部價格的字符串。如何從歐元(€)表達式中刪除特定的前導字符和尾隨字符?

我需要刪除的是,小數部分和貨幣的一部分。

貨幣符號可以通過PHP使用str_replace()功能被去除,但小數部分因產品不同而不同。

<span class="price" id="old-price-3">€&nbsp;200,00 </span> 
    <span class="price" id="product-price-3">€&nbsp;80,00</span> 

我需要這個類似:

<span class="price" id="old-price-3">200 </span> 
     <span class="price" id="product-price-3">80</span> 

我試圖str_replace()

echo str_replace(array(',00','€'),'','<span class="price" id="old-price-3">200 </span> 
       <span class="price" id="product-price-3">80</span>'); 

但是這隻能在有00小數。有人可以幫我弄這個嗎?

+1

邊注:[I編輯](https://stackoverflow.com/revisions/45905204/2)的問題並採取了幾句話,並修正了一些錯別字/語法。我希望這能解決你所問的問題。 –

回答

2

你並不需要一個以上的函數調用此。

匹配的然後零個或多個非數字字符,然後捕獲一個或多個數字,然後匹配任何結束span標籤之前出現。用捕獲的匹配替換。

代碼:(Demo)(Pattern Demo

$string='<span class="price" id="old-price-3">€&nbsp;200,00 </span> 
<span class="price" id="product-price-3">€&nbsp;80,00</span>'; 

echo preg_replace("/€\D*(\d+)[^<]*/","$1",$string); 

輸出:

<span class="price" id="old-price-3">200</span> 
<span class="price" id="product-price-3">80</span> 
-2

你可以使用strtok的:

$x="200,00"; 
$x = strtok($x, ','); 

現在X = 200;)

+1

如果我有$ x值,我不想發佈此問題 –

+0

好吧,你想從一個字符串中提取值,你可以使用正則表達式: /〜([0-9] +),([ 0-9] +)〜/ – XpertSpot

2

你可以使用這個表達式:

/€&nbsp;([0-9]+),([0-9]+)/ 

詳細

€&nbsp; start the match with € and a space 
([0-9]+) match any digit 1 or more times 
,   match a comma after the first number 
([0-9]+) match any digit 1 or more times after the comma 

喜歡這個:

<?php 
$s = '<span class="price" id="old-price-3">€&nbsp;200,00 </span> 
<span class="price" id="product-price-3">€&nbsp;80,00</span>'; 
var_dump(htmlentities(preg_replace("/€&nbsp;([0-9]+),([0-9]+)/", "$1", $s))); 

Demo

+0

演示似乎工作,但是當我申請我的代碼也沒有工作,無論如何謝謝你的答案 –

相關問題