I am trying
[audio mp3=\"https://abcd.com/wp-content/uploads/sites/2/2020/03/classical-demo.mp
The problem is that you are running replace on $a
without updating it, so you function replaces <
with [
and outputs, then it replaces >
with ]
but on the original variable, then outputs.
If you update the variable with the result of str_replace
it works as intended.
$a = '[audio mp3="https://abcd.com/wp-content/uploads/sites/2/2020/03/classical-demo.mp3"][/audio]';
$a = str_replace("[","<",$a);
$a = str_replace("]",">",$a);
$a = str_replace("audio","a",$a);
$a = str_replace("mp3=","href=",$a);
echo $a;
Also as @Phil pointed out in a comment your last line will change your file extension, I adjusted the last replace to account for this.
As alternative, to str_replace
, perhaps you could use regex?
$x = '[audio mp3="https://abcd.com/wp-content/uploads/sites/2/2020/03/classical-demo.mp3"][/audio]';
preg_match('/"(.*?)"/', $x, $matches);
print_r($matches);
output
Array
(
[0] => "https://abcd.com/wp-content/uploads/sites/2/2020/03/classical-demo.mp3"
[1] => https://abcd.com/wp-content/uploads/sites/2/2020/03/classical-demo.mp3
)
I'm not PHP
developer, but I think you can use following code:
$a = '[audio mp3="https://abcd.com/wp-content/uploads/sites/2/2020/03/classical-demo.mp3"][/audio]';
$b = str_replace("[","<", $a);
$b = str_replace("]",">", $b);
$b = str_replace("audio","a", $b);
// you need to replace mp3=, not mp3, as you have 2 of it
$b = str_replace("mp3=","href=", $b);
// optional
$b = str_replace("><",">link text<", $b);
echo $b;
exit();
$b
will be: <a href="https://abcd.com/wp-content/uploads/sites/2/2020/03/classical-demo.mp3">link text</a>
See it in action thanks to @Phil