(PHP) Now playing

Status
Niet open voor verdere reacties.

Razing

Gebruiker
Lid geworden
13 okt 2008
Berichten
167
Ik gebruik momenteel een script om een xml uit te lezen.

Maar hij pakt ook de bestandsexentsie .mp3

Zou ik dat kunnen filteren inplaats dat hij laat zien: Katy Perry - Hot 'n Cold.mp3 -> Katy Perry - Hot 'n Cold ;)

En is het ook mogelijk om bestanden die beginnen met *** te filteren, dus helemaal niet laten zien?

Dit is het script.

PHP:
<?php
$Resource    = "xml.xml";
$XML             = new SimpleXMLElement( $Resource, null, true );

foreach($XML -> Current -> artistName as $artist)
{echo $artist;}

foreach($XML -> Current -> titleName as $title)
{echo $title;}
?>

Als het mogelijk is en jullie mijn kunnen helpen dan is dat echt mooi!!!!
 
Wellicht een beetje kort door de bocht maar dit is mogelijk een optie om .mp3 weg te halen.

PHP:
foreach($XML -> Current -> titleName as $title) {
  $title = str_replace(".mp3", "", $title);
  echo $title;
}

De *** staat altijd in $artist?

Dan kun je dit proberen
PHP:
foreach($XML -> Current -> artistName as $artist) {
  if(!preg_match("/^\*\*\*", $artist)) {
    echo $artist;
  }
}
 
Hoe krijg ik dit nu bij elkaar in? Ben geen prof op het gebied van preg_match o.i.d..
 
Laatst bewerkt door een moderator:
Ik heb het nu zo gedaan:

PHP:
<?php
$Resource    = "xml.xml";
$XML             = new SimpleXMLElement( $Resource, null, true );

foreach($XML -> Current -> artistName as $artist) {
  if(!preg_match("***" , $artist)) {
    echo $artist;
  }
}

foreach($XML -> Current -> titleName as $title) {
  $title = str_replace(".mp3", "", $title);
  echo $title;
}
?>

Maar dan krijg ik dit:


Warning: preg_match() [function.preg-match]: Unknown modifier '*' in C:\xampp\htdocs\index.php on line 6
*** RUSTIGE ROCK 1

EDIT: .mp3 weg halen werkt, toptop! Nug nog de *** niet showen.
EDIT 2: Is het ook mogelijk om bij artist & titel allebij te kijken naar .mp3 en ***?
 
Laatst bewerkt:
Het is ook logisch dat hij die foutmelding geeft.

Een sterretjes is immers een "modifier" in die functie.
Het staat voor "0 of meer"

Daarom is die van mij ook anders.
Die escaped alle sterretjes en het dakje zorgt ervoor dat hij kijkt of die tekens ook aan het begin staan.

EDIT2 is wel mogelijk dit wordt dan je code:
PHP:
<?php
$Resource    = "xml.xml";
$XML             = new SimpleXMLElement( $Resource, null, true );
 
foreach($XML -> Current -> artistName as $artist) {
  $artist = str_replace(".mp3", "", $artist);
  if(!preg_match("/^\*\*\*", $artist)) {
    echo $artist;
  }
}
 
foreach($XML -> Current -> titleName as $title) {
  $title = str_replace(".mp3", "", $title);
  if(!preg_match("/^\*\*\*", $title)) {
    echo $title;
  }
}
?>
 
Bedankt voor je reactie!!

Krijg nu deze melding:

Warning: preg_match() [function.preg-match]: No ending delimiter '/' found in C:\xampp\htdocs\index.php on line 7

Warning: preg_match() [function.preg-match]: No ending delimiter '/' found in C:\xampp\htdocs\index.php on line 14
 
Laatst bewerkt door een moderator:
Expressies is altijd lastig om dat goed te doen zonder het te testen :D

Probeer dit eens
PHP:
<?php
$Resource    = "xml.xml";
$XML             = new SimpleXMLElement( $Resource, null, true );
 
foreach($XML -> Current -> artistName as $artist) {
  $artist = str_replace(".mp3", "", $artist);
  if(!preg_match("/^\*\*\*+\", $artist)) {
    echo $artist;
  }
}
 
foreach($XML -> Current -> titleName as $title) {
  $title = str_replace(".mp3", "", $title);
  if(!preg_match("/^\*\*\*+\", $title)) {
    echo $title;
  }
}
?>
Uiteraard ook niet gegarandeerd goed :)
 
Zag het aan de kleuren..


Parse error: parse error in C:\xampp\htdocs\index.php on line 13
 
@Tha Devil

Ik denk dat:

PHP:
if(!preg_match("/^\*\*\*+\", $artist)) {
,
PHP:
if(!preg_match("/^\*\*\*/", $artist)) {

moet zijn. Je escapet nu de quotes aan het eind van je pattern.
 
@Erik, ah inderdaad goed opgemerkt :thumb:
 
Na een tijdje deze foutmeling:


Warning: SimpleXMLElement::__construct() [simplexmlelement.--construct]: xml.xml:9: parser error : Input is not proper UTF-8, indicate encoding ! Bytes: 0xEB 0x73 0x74 0x6F in C:\xampp\htdocs\index.php on line 3

Warning: SimpleXMLElement::__construct() [simplexmlelement.--construct]: <titleName>Tiësto - Elements of life.mp3</titleName> in C:\xampp\htdocs\index.php on line 3

Warning: SimpleXMLElement::__construct() [simplexmlelement.--construct]: ^ in C:\xampp\htdocs\index.php on line 3

Fatal error: Uncaught exception 'Exception' with message 'String could not be parsed as XML' in C:\xampp\htdocs\index.php:3 Stack trace: #0 C:\xampp\htdocs\index.php(3): SimpleXMLElement->__construct('xml.xml', 0, true) #1 {main} thrown in C:\xampp\htdocs\index.php on line 3

Kan dat komen omdat ik 2 platen tegelijk instarT?
 
Ik denk haast dat het komt door de ë in Tiësto. Ik neem aan dat je op een of andere manier de character encoding in je xml file wel kunt instellen.
 
Dit is de XML file:

PHP:
<BroadcastMonitor>
	<updated>2009-06-12T22:09:30</updated>
	<stationName>Unknown</stationName>
	<Current>
		<startTime>2009-06-12T22:09:30</startTime>
		<titleId>8533</titleId>
		<itemCode></itemCode>
		<itemReference></itemReference>
		<titleName>Tiësto - Elements of life.mp3</titleName>
		<artistName></artistName>
		<albumName></albumName>
	</Current>
	<Next>
		<startTime>2009-06-12T22:17:51</startTime>
		<titleId>0</titleId>
		<itemCode></itemCode>
		<itemReference></itemReference>
		<titleName></titleName>
		<artistName></artistName>
		<albumName></albumName>
	</Next>
</BroadcastMonitor>
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan