Come tagliare / nascondere l'estensione del file e mostrare il nome del file sulla pagina usando PHP?

StackOverflow https://stackoverflow.com//questions/25086639

Domanda

Ho creato un modulo in cui l'utente seleziona la data e l'opzione dal menu a discesa (che elenca tutti i file dal percorso) e la sostiene. Se inviato, l'ingresso dell'utente viene scritto in altro file in determinati formato, ma anche mostrare sotto il modulo, quindi l'utente può vedere l'uscita finale. L'uscita, in particolare contiene la data seguita con il collegamento in base all'opzione scelta (l'utente può effettuare più selezioni).

Esempio:

Seleziona l'utente 08-01-2014 da Data Picker e option1.txt dal menu a discesa. Ora che è stato emesso al file.jsin questo formato:

'08-01-2014' : '<a href="/path/option1.txt" target="_blank"><span>option1.txt</span></a>',
.

e anche è stato mostrato sotto il modulo in questo formato ( opzione1.txt è sottolineato in quanto è un link ma non so se posso sottolinearlo qui per mostrare scopi ):

08-01-2014 : option1.txt
.

Quindi la mia domanda è come posso modificare il codice che scrive l'ingresso dell'utente in modo che il codice che mostra che può leggere il file e mostra 08-01-2014 : option1 senza .txt.

Codice PHP che annota l'ingresso dell'utente ( wiretewn.php ):

<?php
    $pickdate = $_POST['date'];
    $workout = $_POST['workout'];
    $date = '   \''.$pickdate .'\' : \'<a href="../routines/'.$workout.'" target="_blank"><span>'.$workout.'</span></a>\',' .PHP_EOL;
    $file = 'test.js';
// Open the file to get existing content
    $current = file_get_contents($file);
// Append a new workout to the file
    $current .= $date;
    $current = preg_replace('/};/', "", $current);
    $current = $current.'};';
// Write the contents back to the file
    file_put_contents($file, $current);
    header( "location:index.php" );
?>
.

Codice PHP che mostra l'ingresso dell'utente sotto il modulo ( index.php ):

<?php
    $file = "test.js";
    $current = file_get_contents( $file );
    $current = preg_replace('/var codropsEvents = {/', "", $current);
    $current = preg_replace('/,/', "<br>", $current);
    $current = preg_replace('/\'/', " ", $current);
    $current = preg_replace('/ /', " ", $current);
    $current = preg_replace('/};/', "", $current);
    //$current = preg_replace('/option1.txt/', "<a href='test.php'>option1</a>", $current);
    echo $current;
?>
.

Ho provato tutto ciò che sapevo e ho potuto trovare su internet e il più vicino che potrei ottenere è con la linea commentata nel codice sopra

//$current = preg_replace('/option1.txt/', "<a href='test.php'>option1</a>",
.

Sta funzionando solo per la singola voce e devo aggiungere manualmente la stessa linea, quindi posso applicarlo a un'altra voce.

Qualsiasi aiuto sarebbe molto apprezzato.

È stato utile?

Soluzione

È possibile utilizzare basename per ottenere il nome file dal percorso completo:

$filename = basename($url,'.txt');
.

Dove $url è il percorso del tuo file .txt

Altri suggerimenti

È possibile utilizzare preg_replace per utilizzare un'espressione regolare per fare il lavoro.

$current = preg_replace(
    '/(.+)\.(.{2,3})$/i',
    '<a href="test.php">\1</a>',
    $current
);
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top