Stuk uit songtitel verwijderen met php
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
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
Gesponsorde koppelingen:
Je kan hem toch exploden op de ( en dan alleen array 0 gebruiken?
dus:
dus:
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)?
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:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
$string = 'Madonna - Feels like a prayer (madhouse remix) 2010';
$string = preg_replace('_^([^\(]+)(\([^\)]+\))([^\(]*)$_', '$1 $3', $string);
echo $string;
?>
$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...
Echter wil de refresh nu niet meer werken...
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?
$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>
$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>
Modedit:
Gebruik [.code][./code] tags om je code overzichtelijk weer te geven!
Gewijzigd op 06/06/2010 16:45:45 door Joren de Wit
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.
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?
Jep...
Je kunt natuurlijk ook gewoon gebruik maken van substr en strpos i.p.v. die preg_replace constructie.
Hoe ziet dat er dan uit Karl?
Gobaal (pseudo achtige code):
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.
Code (php)
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.
Dit is een typisch geval waar een reguliere expressie veel beter is dan iets anders:



