Mam problem z konwersją linku na tag. tutaj jest

Próbuję

[audio mp3="https://abcd.com/wp-content/uploads/sites/2/2020/03/classical-demo.mp3"][/audio]

Przekonwertować na

<a href="https://abcd.com/wp-content/uploads/sites/2/2020/03/classical-demo.mp3"></a>

Używam str_replace, poniżej znajduje się kod jeden po drugim.

$a = '[audio mp3="https://abcd.com/wp-content/uploads/sites/2/2020/03/classical-demo.mp3"][/audio]';

echo str_replace("[","<",$a);
echo str_replace("]",">",$a);
echo str_replace("audio","a",$a);
echo str_replace("mp3","href",$a);
exit();

Ale nadal nie ma rezultatu.

Czy jest jakiś inny sposób rozwiązania tego problemu? każdy, kto ma rozwiązanie tego problemu, pomóż mi rozwiązać ten problem.

php
1
iAmGroot 1 kwiecień 2020, 08:14

3 odpowiedzi

Najlepsza odpowiedź

Nie jestem programistą PHP, ale myślę, że możesz użyć następującego kodu:

$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 będzie: <a href="https://abcd.com/wp-content/uploads/sites/2/2020/03/classical-demo.mp3">link text</a>

Zobacz to w akcji dzięki @Phil

2
Mehdi Dehghani 1 kwiecień 2020, 06:36

Problem polega na tym, że wykonujesz zamianę na $a bez aktualizacji, więc funkcja zamienia < na [ i wyświetla, a następnie zamienia > na ] ale na oryginalnej zmiennej, następnie wyprowadza.

Jeśli zaktualizujesz zmienną wynikiem str_replace to działa zgodnie z zamierzeniami.

$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;

Edytować

Również, jak @Phil wskazał w komentarzu, twoja ostatnia linia zmieni rozszerzenie twojego pliku, dostosowałem ostatnią zamianę, aby to uwzględnić.

1
Graham Ritchie 1 kwiecień 2020, 06:30

Jako alternatywę dla str_replace możesz użyć wyrażenia regularnego?

$x = '[audio mp3="https://abcd.com/wp-content/uploads/sites/2/2020/03/classical-demo.mp3"][/audio]';

preg_match('/"(.*?)"/', $x, $matches);

print_r($matches);

Wynik

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
)
1
Clément Baconnier 1 kwiecień 2020, 06:36