preg_match en preg_replace

Status
Niet open voor verdere reacties.

tomdb

Gebruiker
Lid geworden
10 nov 2008
Berichten
417
Hallo mensen,
het wil niet lukken met preg_match en preg_replace. Ik moet bestandsnamen controleren op verboden tekens, en die vervolgens vervangen door een underscore( _ ).
Hij doet het echter niet.
De code:
PHP:
function check_file( $file ){

list( $file_name, $ext ) = explode( '.', $file['name'] );

if( preg_match( "/-/", $file_name ) ) {
		preg_replace( "/-/", "_", $file_name );
}
}
PHP:
check_file( $_FILES['bijlage'] );
In het eerste stuk code de functie, in het tweede stuk zou die moeten worden uitgevoerd maar dat doet ie niet.

Wat doe ik verkeerd?
 
Laatst bewerkt:
Je returnt niets.

Probeer het eens zo:

PHP:
function check_file( $file ) {
 
  list( $file_name, $ext ) = explode( '.', $file['name'] );
 
  if( preg_match( "/-/", $file_name ) ) {
    preg_replace( "/-/", "_", $file_name );
  }
}

$file_name = check_file ( $file_name );
 
PHP:
$_FILES['bijlage']['name'] = check_file( $_FILES['bijlage'] );
Helaas werkt dit ook niet, want dan ziet returnt ie een lege string, kijk maar naar de errors:
Warning: move_uploaded_file(/**/***/public_html/docs/1/2/) [function.move-uploaded-file]: failed to open stream: Is a directory in /**/***/public_html/php/parser.php on line 609

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpiXIM6O' to '/****/****/public_html/docs/1/2/' in '/****/***/public_html/php/parser.php on line 609

Zijn er nog andere mogelijkheden?
 
Oeps, ik zal wel niet helemaal wakker zijn geweest toen ik mijn post typte:

PHP:
function check_file( $file ) {
 
  list( $file_name, $ext ) = explode( '.', $file['name'] );
 
  if( preg_match( "/-/", $file_name ) ) {
    return preg_replace( "/-/", "_", $file_name );
  } else {
    return $file_name;
  }
}
 
$file_name = check_file ( $file_name );

Overigens, als het aan de regex ligt, dan weet ik niet. Niet bijster veel kennis van.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan