Wortposition eines Satzes anzeigen

jackie05

Erfahrenes Mitglied
Hallo,
ich habe ein kleines problem und zwar, möchte ich folgendes versuchen:
PHP:
$Text1 = "dies Hallo, Test! ein ist";
$Text2 = "Hallo, dies ist ein Test!";

ich möchte erstmal prüfen von Text2 "Hallo," und diese soll bei Text1 geprüft werden, an welcher position es sich befinden, also 1.

Hier mal ein beispiel:
10432
1=Hallo, 0=dies 4=ist 3=ein 4=Test!

Ich möchte dann die Nummern ausgeben lassen, an welche Positionen sich die Wörter befinden.
Wisst ihr wie ich das ambesten mit einer Schleife lösen kann?

Vielen Dank schonmal.

MfG
 
Mache aus den Sätzen per preg_match() einen Array(in dem du nur Buchstabenfolgen...also die Wörter ohne Satzzeichen und Whitespaces speicherst), dann kannst du dir per array_search() die Position der Wörter ausgeben lassen.
 
Vielen Dank.
Also ich hábe das mit Explode() gemacht:
PHP:
$Text1 = "dies Hallo, Test! ein ist!"; //Frage
$Text2 = "Hallo, dies ist ein Test!"; //Antwort
echo $Text1."<br>";
echo $Text2."<br><br>";
$teil = explode(" ", $Text2);

aber wie kann ich die zahlen anzeigen an welcher Position die Wörter sind?

MfG
 
[...] dann kannst du dir per array_search() die Position der Wörter ausgeben lassen.

Sven's Steilvorlage annehmen, kurz dribbeln und dann rein mit dem Ding. "TOOOOOOR" ;)

Ein kleines Beispiel zum Gebrauch von array_search():
PHP:
<?
$text1 = "dies Hallo, Test! ein ist!"; //Frage

$word_to_search = "Hallo,";

$exp_t1 = explode(" ", $text1);

$word_pos_text1 = array_search($word_to_search, $exp_t1);

echo $word_pos_text1;
?>
http://de.php.net/manual/de/function.array-search.php
 
Danke Dir.
Ich habe das mal so geändert:

PHP:
    $exp_t1 = explode(" ", $Text1);
    $exp_t2 = explode(" ", $Text2);
    for ($i=0; $i<10; $i++)
    {
      $word_to_search = $exp_t2[$i];
      $word_pos_text1 = array_search($word_to_search, $exp_t1);
      $zahl = $zahl + $word_pos_text1;
      //echo $word_pos_text1;
    }
    echo $zahl;

irgendwie zeigt er nur 2 Zahlen an, wenn ich in der Schleife direkt den echo befehl ausführe, dann geht das.
Woran kann das liegen?

EDIT: Ich habe das jetzt so geändert:
$zahl .= $word_pos_text1;
Jetzt geht es, vielen dank.

MfG
 
Zuletzt bearbeitet:
Du solltest berücksichtigen, dass ein Text auch mehr als 11 Wörter besitzt. Mein Vorschlag:
PHP:
$text1 = 'dies Hallo, Test! ein ist!';
$text2 = 'Hallo, dies ist ein Test!';
$words1 = array_filter(preg_split('/\W+/', $text1), create_function('$val', 'return $val !== "";'));
$words2 = array_filter(preg_split('/\W+/', $text2), create_function('$val', 'return $val !== "";'));
foreach( $words2 as $word ) {
	if( ($pos = array_search($word, $words1)) !== false ) {
		$zahl .= $pos;
		echo $pos;
	}
}
 
@Gumbo Vielen Dank, ich habe dein beispiel genommen.
Aber mir ist aufgefallen, wenn in einem Satz mal 2 gleiche Wörter vorkommen, das diese die gleiche Nummer haben, kann man das irgendwie anders lösen?

MfG
 
Zuletzt bearbeitet:
Hallo nochmal,
wenn ich die Wortpositionen von diesem Satz anzeigen möchte:
Sind sie's nicht?
Sind nicht? sie's

dann kommen diese Positionen raus:
0231

obwohl nur 3 Wörter im Satz vorhanden sind, kann das vieleicht an das ' zeichen liegen?

MfG
 
Zuletzt bearbeitet:
Arbeitest du mit explode? Wie sehen die betreffenden Codezeilen aus? Ist ein bisschen schwer mit diesen Informationen eine Ferndiagnose zu stellen :) Hast du schonmal probiert, das ' wegzulassen und die Ergebnisse zu vergleichen?
 
Zurück