Hi @all!
Entweder hab ich gerade ein Brett vorm Kopf oder es ist wirklich kniffelig... Folgendes:
Ich habe eine Art Suchstring aus einem oder mehrerer Wörter. Dieser Suchstring soll in einem vorhandenen String erkannt werden und falls er gefunden wurde, soll er entfernt werden.
Das Problem besteht allerdings, darin, dass der Suchstring auch ein Teil eines Wortes sein kann - dieser soll aber NICHT matchen.
Folgende mal ein kleines Script zum Testen. Die Roten stellen sollen ersetzt werden. Alle anderen vorkommen von "AIRBAG" sollten nicht matchen.
Code:
<xmp>
<?php
$text[] = 'Ford-Citroen-BMW-vw/setasign/ABS-SeitenAIRBAGs-AIRBAG-Klima-Regensensor-Parktronic-Skisack';
$text[] = 'Ford-Citroen-BMW-vw/setasign/AIRBAG-ABS-SeitenAIRBAGs-Klima-Regensensor-Parktronic-Skisack';
$text[] = 'Ford-Citroen-BMW-vw/setasign/ABS-SeitenAIRBAGs-Klima-Regensensor-Parktronic-Skisack-AIRBAG;
$text[] = 'AIRBAG-ABS-SeitenAIRBAGs-Klima-Regensensor-Parktronic-Skisack';
$text[] = 'Super AIRBAG-AIRBAG-Super AIRBAG-Super AIRBAG';
$text[] = 'AIRBAG-AIRBAG Test/Jaja';
$text[] = AIRBAG;
print_r($text);
$searchFor = 'AIRBAG';
$patterns = array();
$patterns[] = '~^'.$searchFor.'$~iu'; // nur mal als Anfang...
foreach ($text AS $k => $v) {
foreach ($patterns AS $pattern) {
if (preg_match($pattern, $text[$k], $m)) {
$text[$k] = preg_replace($pattern, '', $text[$k]);
break;
}
}
}
print_r($text);
Ich hatte schon diverse Pattern, aber alle hatten irgendwelche Probleme oder es kam mir einfach komisch vor so viele patterns drüberlaufen zu lassen...
Hat jemand ne Idee?
Danke und Gruß
Jan