$data = 'this is appLe and ApPle';
$search = 'apple';
// Zum Beispiel Kauf $search
verwenden, wie Array mit vielen Worten $search = array("apple","pear")
$replace = 'pear';
// $replace = array("pen","pupil")
PHP: Wie Array-Version diese Funktion korrekt erstellen?
Wie konvertiert diese Funktion Array Worte in $ Suche zu verwenden und $ ersetzen?
$data = preg_replace_callback('/\b'.$search.'\b/i', function($matches) use ($replace)
{
$i=0;
return join('', array_map(function($char) use ($matches, &$i)
{
return ctype_lower($matches[0][$i++])?strtolower($char):strtoupper($char);
}, str_split($replace)));
}, $data);
Funktioniert gut, aber es gibt ein Problem .. Wenn ich ** Birne ** eingeben, funktioniert das Skript ein wenig falsch und als Antwort gibt ** PupiL ** und nicht ** Schüler **. Warum passiert dies? Und wie kann das korrigiert werden? Und wie macht man damit dieses Skript funktioniert und in anderen Kodierungen zB für ** Cyrillici **? – Otabek
Ich glaube, Sie haben gefragt, nur Array-Unterstützung in * dieser * Frage hinzuzufügen. Wenn Sie eine andere haben, zögern Sie nicht zu fragen. Hier ist jedoch ein Hinweis: Um die Verarbeitung von Unicode-Strings hier zu ermöglichen, fügen Sie dem Regex einen 'u'-Modifizierer hinzu (' '/ \ b (?:'. Implode ("| |, array_keys ($ arr)). ') \ b/iu '; ') und ersetze alle' strto ... 'durch' mb_strto ... '. 'ctype_lower' kann auch durch' preg_match ('~^\ p {Ll} + \ z ~ u', $ m) 'ersetzt werden. –
'$ data =' Alex hat viele Katzen zu Hause. '; $ search = Array ("Apfel", "Birne", "Alex"); $ ersetzen = Array ("Stift", "Schüler", "Александр"); $ search = array_map ("utf8_encode", $ search); $ replace = array_map ("utf8_encode", $ ersetzen); $ arr = array_combine ($ search, $ ersetzen); $ arr = array_map ("utf8_encode", $ arr); ' – Otabek