2016-03-27 9 views
1

ich einige Probleme mit einem Regex haben, der Zweck dieser Schrift ist ein Auto Corrrection einiger WörterRegex/Einstellung zu viel Punkte zwischen Klein- und Groß Wörter

Beispiel zu tun, was er passt und ersetzen soll, sind:

Word.Word 

Zu: Word. Wort

wordWord 

Zu: Wort. Wort

Ich tue dies mit dem folgenden Skript

function filter_string($string) { 
    $string = preg_replace("/([a-z])([A-Z])/", "$1. $2", $string); 
    $string = preg_replace("/([a-z]).([A-Z])/", "$1. $2", $string); 
    $string = str_replace("...", "&hellip", $string); 
    $string = str_replace("Games. Com", "GamesCom", $string); 
    $string = str_replace("Pv. P", "PvP", $string); 
    $string = str_replace("Pv. E", "PvE", $string); 
    $string = str_replace("Blizz. Con", "BlizzCon", $string); 
    $string = str_replace(". PvP", " PvP", $string); 
    $string = str_replace(". PvE", " PvE", $string); 
    return $string; 

Aber aus irgendeinem Grund er ist passend auch

Legendary Pictures zeigt uns das offizielle Poster zum Warcraft Film. 

und ersetzen Sie es zu

Legendary. Pictures zeigt uns das offizielle. Poster zum. Warcraft. Film. 

bekomme ich nicht wo alle Punkte herkommen und warum er das passt, hoffe ich, dass jemand mir einen Hinweis geben könnte, was falsch ist es.

Antwort

2

Ihre zweite regex ersetzen:

$string = preg_replace("/([a-z]).([A-Z])/", "$1. $2", $string); 

mit dieser:

$string = preg_replace("/\.(\w)/", ". $1", $string); 

Sie wahrscheinlich den Punkt (es ist ein Token zu entkommen vergaß irgendein Zeichen).

+0

Oh danke das könnte der Grund sein = O. Ich habe versucht, ihm zu entkommen, die Punkte sind weg, aber jetzt wird er WordWord nicht ändern in "Wort. Word" er macht "Word Word", hmm aber du hast mir einen großen Hinweis gegeben, um das zu lösen. Vielen Dank – Deex

+0

Sie sind herzlich willkommen! –

0

Versuchen whitout dot Raum

$string = preg_replace("/([a-z])([A-Z])/", "$1.$2", $string); 

$string = preg_replace("/([a-z]).([A-Z])/", "$1.$2", $string); 
+0

Hallo ich habe das versucht, aber das hat nichts geändert. Ich denke, der Teil mit dem Bug ist '$ string = preg_replace ("/([az]). ([AZ])/"," $ 1. $ 2 ", $ string);' Normalerweise sollte es auf "word.Word" passen "aber stattdessen seine Übereinstimmung auf anderen Dingen Hmm – Deex

+0

Probieren Sie $ string = preg_replace ("/([az] /) ./ ([AZ] /) "," $ 1. $ 2 ", $ string); Ich bin mir nicht sicher, aber könnte funktionieren .. – Milor123

Verwandte Themen