Hallo,

Voor een radiostation is mij gevraagd naar een oplossing te zoeken om de songtitels in te korten. Ik zal een voorbeeld geven hoe deze ineen steekt.

Madonna - Feels like a prayer (madhouse remix)

Nu is het de bedoeling dat alles dat tussen haakjes staat (soms ook andere tekens) niet meer zichtbaar is op de website zodat de layout dan niet telkens uiteen wordt getrokken. We kunnen ook alle nummers nalopen (+/- 20000 verschillende) maar dat is onbegonnen werk.

Nu dacht ik dat met php ook zoiets kon. Iemand een idee hoe dit uit te voeren?

Bij voorbaat dank,

Ronald Broos
Je kan hem toch exploden op de ( en dan alleen array 0 gebruiken?

dus:


<?php
$song = 'Madonna - Feels like a prayer (madhouse remix)';
$expl = explode('(', $song);
				  
echo $expl[0];
?>
dat werkt al redelijk maar als de songtext bijvoorbeeld zo is:

Madonna - Feels like a prayer (madhouse remix)2010

Dan komt 2010 er niet meer achter te staan. Hoe krijg ik er dat dan achter zonder (madhouse remix)?
Probeer het eens met preg_replace(). Je zou zoiets kunnen gebruiken:

<?php
$string = 'Madonna - Feels like a prayer (madhouse remix) 2010';
$string = preg_replace('_^([^\(]+)(\([^\)]+\))([^\(]*)$_', '$1 $3', $string);

echo $string;
?>
Oke ik heb het verwerkt in onderstaand script:
Echter wil de refresh nu niet meer werken...


<? 
$open = fsockopen("91.121.117.158","8320"); 
if ($open) { 
fputs($open,"GET /7.html HTTP/1.1\nUser-Agent:Mozilla\n\n"); 
$read = fread($open,1000); 
$text = explode(",",$read); 
$text = $text[6]; 
} else { $text="Server Offline, Please try again later"; } ?>

<?

$string = $text;
$string = preg_replace('_^([^\(]+)(\([^\)]+\))([^\(]*)$_', '$1 $3', $string);

?>

<html>
<head>
<meta http-equiv="refresh" content="15;URL=nummer2.php">
</head>
<body>
<?
echo $string;
?>
</body>
</html>





Als ik dit scriptje uitvoer werkt het gewoon. Ik heb dan wel de shorttags vervangen door de volledige PHP open tag.

Verder geeft het wellicht nog niet het gewenste resultaat, maar dat komt omdat er een loze ( in de titel staat die niet afgesloten wordt.
En dan doet de refresh het wel bij jou? Dwz dat er naar verloop van tijd een nieuwe titel verschijnt?
Je kunt natuurlijk ook gewoon gebruik maken van [php]substr[/php] en [php]strpos[/php] i.p.v. die preg_replace constructie.
Hoe ziet dat er dan uit Karl?
Gobaal (pseudo achtige code):
<?php
$titel = 'Titel van nummer (blaat)blup';
$titelnieuw = substr($titel, 0, strpos($titel, '('));
$titelnieuw = $titelnieuw . substr($titel, strpos($titel, ')'), strlen($titel)-strpos($titel, ')'));
echo $titelnieuw;
?>

Ik houd er geen rekening mee dat je soms nog eens +1 moet doen omdat een string op nul begint ofzo, en ik houd ook geen rekening met de efficiƫntie, je hoeft natuurlijk iets niet meerdere malen uit te rekenen, je kunt natuurlijk ook die ) vanaf de ( berekenen, foutafhandeling ontrbeekt ook (wat als die tekens niet in de string zitten?), en ik weet niet of het werkt. Zoiets zou het denk ik moeten zijn. Kijk zelf ook even op php.net naar de functies voor hoe en wat e.d.

Slaap lekker.

Reageren