Stuk uit songtitel verwijderen met php

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ronald Broos

Ronald Broos

05/06/2010 16:21:23
Quote Anchor link
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
 
PHP hulp

PHP hulp

16/04/2024 11:02:38
 
Milo S

Milo S

05/06/2010 16:28:00
Quote Anchor link
Je kan hem toch exploden op de ( en dan alleen array 0 gebruiken?

dus:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$song
= 'Madonna - Feels like a prayer (madhouse remix)';
$expl = explode('(', $song);
                  
echo $expl[0];
?>
 
Ronald Broos

Ronald Broos

05/06/2010 17:16:30
Quote Anchor link
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)?
 
Joren de Wit

Joren de Wit

05/06/2010 18:00:38
Quote Anchor link
Probeer het eens met preg_replace(). Je zou zoiets kunnen gebruiken:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$string
= 'Madonna - Feels like a prayer (madhouse remix) 2010';
$string = preg_replace('_^([^\(]+)(\([^\)]+\))([^\(]*)$_', '$1 $3', $string);

echo $string;
?>
 
Ronald Broos

Ronald Broos

06/06/2010 16:12:02
Quote Anchor link
Oke ik heb het verwerkt in onderstaand script:
Echter wil de refresh nu niet meer werken...

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?
$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>


Gebruik [.code][./code] tags om je code overzichtelijk weer te geven![/modedit]
Gewijzigd op 06/06/2010 16:45:45 door Joren de Wit
 
Joren de Wit

Joren de Wit

06/06/2010 16:47:30
Quote Anchor link
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.
 
Ronald Broos

Ronald Broos

06/06/2010 17:13:04
Quote Anchor link
En dan doet de refresh het wel bij jou? Dwz dat er naar verloop van tijd een nieuwe titel verschijnt?
 
Joren de Wit

Joren de Wit

06/06/2010 17:29:56
Quote Anchor link
Jep...
 

06/06/2010 19:34:16
Quote Anchor link
Je kunt natuurlijk ook gewoon gebruik maken van substr en strpos i.p.v. die preg_replace constructie.
 
Ronald Broos

Ronald Broos

06/06/2010 22:31:42
Quote Anchor link
Hoe ziet dat er dan uit Karl?
 

06/06/2010 22:53:50
Quote Anchor link
Gobaal (pseudo achtige code):
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?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.
 
Richard van Velzen

Richard van Velzen

07/06/2010 09:59:19
Quote Anchor link
Dit is een typisch geval waar een reguliere expressie veel beter is dan iets anders:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
\((?:[^()]+|(?R))*(?:\)|$)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.