ich eine Methode müssen snake_case dass jetzt mein Kamel Fall Strings Schlange Fall konvertieren, aber es ist in drei Anrufe von preg_replace()
gebrochen:Mit preg_replace() Camelcase konvertieren
public function camelToUnderscore($string, $us = "-")
{
// insert hyphen between any letter and the beginning of a numeric chain
$string = preg_replace('/([a-z]+)([0-9]+)/i', '$1'.$us.'$2', $string);
// insert hyphen between any lower-to-upper-case letter chain
$string = preg_replace('/([a-z]+)([A-Z]+)/', '$1'.$us.'$2', $string);
// insert hyphen between the end of a numeric chain and the beginning of an alpha chain
$string = preg_replace('/([0-9]+)([a-z]+)/i', '$1'.$us.'$2', $string);
// Lowercase
$string = strtolower($string);
return $string;
}
I Tests schrieb seine überprüfen Genauigkeit, und es funktioniert mit der folgenden Anordnung von Eingängen (array('input' => 'output')
):
$test_values = [
'foo' => 'foo',
'fooBar' => 'foo-bar',
'foo123' => 'foo-123',
'123Foo' => '123-foo',
'fooBar123' => 'foo-bar-123',
'foo123Bar' => 'foo-123-bar',
'123FooBar' => '123-foo-bar',
];
ich frage mich, ob es eine Möglichkeit gibt, meine preg_replace()
Anrufe an eine einzige Leitung zu reduzieren, die mir das gleiche Ergebnis geben wird. Irgendwelche Ideen?
HINWEIS: Referring to this post hat meine Forschung mich eine preg_replace()
regex gezeigt, die mich fast das Ergebnis Ich möchte bekommt, außer es nicht auf das Beispiel von foo123
es foo-123
zu konvertieren funktioniert.
@AdrienLeber die untere Zeile meiner Frage zu lesen. Es ist kein Duplikat. Ich habe diesen Beitrag gelesen und es hat mir bei meiner Frage nicht geholfen. – Matt
Entschuldigung, ich habe die Duplikatmarkierung gelöscht und eine neue Antwort veröffentlicht, basierend darauf, was auf dem Beitrag geteilt wurde, auf den Sie in Ihrer Frage verweisen. – JazZ
@pete aufpassen – Matt