PHP - 删除字符串的一部分

I'm new to PHP and I have a problem.

I need delete all chars since a symbol (Sorry for my bad english , i'm from argentina)

I have this text :

 3,94€

And I need the text is as follows:

3,94

I tried this by multiple ways but it didn't work.

There are a few ways you can do this:

Using strpos:

$string = '3,94€';
echo substr($string, 0, strpos($string, '&'));

or using strstr:

// Requires PHP 5.3+ due to the true (before_needle) parameter
$string = '3,94€';
echo strstr($string, '&', true);

or using explode:

// Useful if you need to keep the &#8364 part for later
$string = '3,94€';
list($part_a, $part_b) = explode('&', $string);
echo $part_a;

or using reset:

$string = '3,94€';
echo reset(explode('&', $string));

The best suited in your case would be to use strpos to find the first occurrence of & in the string, and then use substr to return the string from the begining until the value returned by strpos.

You could use str_replace.

<?php


$string = 3,94&#8364;
$final = str_replace('&#8364' ,'', $string);
echo $final;

You can use regex: https://regex101.com/r/uY0kH3/1

It will work in preg_match() function.

Another posibility is clean the number and then round it:

<?php
    //Option 1: with regular expresions:    
    $val = '3,94&#8364';
    $res = preg_replace('/[^0-9.,]/','',$val);
    var_dump($res); 

    //Option 2: with filter functions:
    $res2 = filter_var($val, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION | FILTER_FLAG_ALLOW_THOUSAND);
    var_dump($res2);

    //Output: 3,948364


    //If you want to round it:

    $res = substr($res, 0, 4);

    var_dump($res);

?>