Ben aslında seni json_decode ilgili bir işlevi kullanabilirsiniz düşünüyordum, ama dizeleri tırnak içinde sarılmış olması veya json_decode bunları işlemez gerekir. Yani tutucuları yazılı olsaydı:
{"mediafile" : "file" : "blahblah.mp3"}
Eğer json_decode($song, true)
için explode($song)
kullanarak benim örnek kodunu değiştirmek ve çalışmak için güzel bir anahtarlı bir dizi olabilir.
Her iki şekilde de, ben sadece anlamsız olduğu, html içine bulunan tutucuların örneklerini değiştirmek için temel bir dize işlevini yerine daha sonra tutucuları bulmak için strtok
fonksiyonunu kullanarak, ve gitti.
strtok
, şimdiye kadar PHP docs gösterdiği gibi, regex kullanmak değildir, bu yüzden bu basit değil sadece olurdu ama aynı zamanda gebelik kitaplığa bir çağrı kaçının.
Son bir şey. Eğer json sözdizimi ile gitmek yaparsanız strtok
onun tarafından arıyor belirteçleri kaldırır gibi, sen {}
yeniden sarmak tutucuları zorunda kalacak.
<?php
$content = "blah blah blah.. yadda yadda, listen to this:
{mediafile file=audiofile7.mp3}
and whilst your here , check this: {mediafile file=audiofile24.mp3}";
function song2html($song) {
$song_info = explode("=", $song);
$song_url = $song_info[1];
$song_html = "<object src=\"$song_url\" blahblahblah>blah</object>";
return ($song_html);
}
$tok = strtok($content, "{}");
while ($tok !== false) {
if(strpos($tok, "mediafile") !== false) {
$songs[] = $tok;
}
$tok = strtok("{}");
}
foreach($songs as $asong) {
$content = str_replace($asong, song2html($asong), $content);
}
echo $content;
?>