2011-01-13 5 views
1

Also nach einigen Advil den ich glaube, ich brauche Hilfeist es möglich, bestimmte Strings basierend auf einer vordefinierten Anzahl von Leerzeichen zu extrahieren?

Ich versuche, ein Skript zu machen, dass der Benutzer eine TXT-Datei laden kann, wird die Datei wie dies als Beispiel aussieht

  EXT. DUNKIN' DONUTS - DAY 

      Police vehicles remain in the parking lot. The determined 
      female reporter from the courthouse steps, MELINDA FUENTES 
      (32), interviews Comandante Chitt, who holds a napkin to his 
      jaw, like he cut himself shaving. 

           MELINDA 
        < Comandante Chitt, how does it 
        feel to get shot in the face? > 

           COMANDANTE CHITT 
        < Not too different than getting 
        shot in the arm or leg. > 

           MELINDA 
        < Tell us what happened. > 

           COMANDANTE CHITT 
        < I parked my car. 
         (indicates assault vehicle 
          in donut shop) 
        He aimed his weapon at my head. I 
        fired seven shots. He stopped 
        aiming his weapon at my head. > 

      Melinda waits for more, but Chitt turns and walks away into 
      the roped-off crime scene. Melinda is confused for a second, 
      then resumes smiling. 

           MELINDA 
        < And there you have it... A man of 
        few words. > 

Ok, Also basierend auf dem, was ich tun möchte, ist dies:

Das PHP-Skript betrachtet die Datei und zählt 35 Leerzeichen, da alle Dateien das gleiche Layout haben und sich nie in Leerzeichen unterscheiden, wählte ich dies als das Beste Weg zu gehen.

für je 35 Leerstellen das Zeichen 36 bis zum Ende der Zeile extrahieren.

Dann $ -Zeichen Tally ++

so dass am Ende der Ausgabe wie

----------------------------------- 
It looks like you have 2 characters in your script 

Melinda 
Commandante Chitt 
----------------------------------- 

mit PHP verschiedenen Namen wählen aussehen würde, und verwenden Sie die strtolower() Fall zu senken, die Saiten und ucfirst() das machen Anfangsbuchstaben in Großbuchstaben

das ist mein Projekt,

ich auf der Bühne bin, wo ich werde verrückt versuchen, um herauszufinden, wie weiß-Räume und alles nach diesem weißen Raum, bis der erste weiß Raum nach dem Wort zu zählen ist ein Charakternamen

+0

Warum haben Sie das zweimal gefragt? Duplizieren: http://stackoverflow.com/questions/4676098/php-how-can-i-get-certain-keywords-form-a-text-file – jasonbar

Antwort

4
<html><body><pre><?php 
     $story = "   EXT. DUNKIN' DONUTS - DAY 

      Police vehicles remain in the parking lot. The determined 
      female reporter from the courthouse steps, MELINDA FUENTES 
      (32), interviews Comandante Chitt, who holds a napkin to his 
      jaw, like he cut himself shaving. 

           MELINDA 
        < Comandante Chitt, how does it 
        feel to get shot in the face? > 

           COMANDANTE CHITT 
        < Not too different than getting 
        shot in the arm or leg. > 

           MELINDA 
        < Tell us what happened. > 

           COMANDANTE CHITT 
        < I parked my car. 
         (indicates assault vehicle 
          in donut shop) 
        He aimed his weapon at my head. I 
        fired seven shots. He stopped 
        aiming his weapon at my head. > 

      Melinda waits for more, but Chitt turns and walks away into 
      the roped-off crime scene. Melinda is confused for a second, 
      then resumes smiling. 

           MELINDA 
        < And there you have it... A man of 
        few words. >"; 
$_ = null; 
if (preg_match_all('/\s{35}(.*)/m',$story,$_)) 
{ 
    $unique_characters = array_unique(array_map(create_function('$a','return ucfirst(strtolower(trim($a)));'),$_[1])); 

    echo "-------------------------\r\n"; 
    echo "It looks like you have ".count($unique_characters)." characters in your script\r\n"; 
    echo "\r\n"; 
    array_map(create_function('$a','echo "{$a}\r\n";'),$unique_characters); 
    echo "-------------------------"; 
} 
?></pre></body></html> 

Sie $_[1] gibt alle Zeichen Namen gefunden bemerken. Dann können Sie array_unique verwenden, um nur die neuen Zeichen zu finden (und sie so anzuzeigen, wie Sie es getan haben).

BEARBEITEN
Ein Update hinzugefügt, das die Arbeit wie gewünscht ausführt. Auch ein funktionierendes Beispiel (bitte kopieren Sie es in Ihre eigene Datei und führen Sie es aus). Auch - bitte entschuldigen Sie meine Kurzanleitung und verwenden Sie array_map, create_function, etc.; p

+0

schlag mich dazu ... gute Antwort! – simon

+0

hmmm, denke da ist irgendwas nicht in Ordnung, die PHP beendet die Ausführung und zeigt eine leere Seite an. Gonna nehmen Sie sich etwas Zeit und sehen, ob ich das Problem finden kann – Eli

+0

@ s2xi: Chancen sind die SO Formatierung machen die Charakternamen (und allgemeine Geschichte) falsch ausgerichtet. Nehmen Sie Ihren ursprünglichen Story-Ausschnitt und legen Sie ihn selbst in die $ story-Variable und versuchen Sie es. Denken Sie daran, dass es 35 Leerzeichen vor dem passenden Namen braucht (sonst wird der 'preg_match_all' fehlschlagen, also eine leere Seite). –

Verwandte Themen