So werde ich mit der Veröffentlichung einige Code beginnen:PHP Regex Gruppierung nicht wie erwartet funktioniert
$output = preg_replace([
'/#(.*?)/i'
], [
'<h1>$1</h1>'
], "#Input");
Und das endete die Ausgabe:
<h1></h1>
Input
In HTML OPT, die Ausgabe I‘ d erreichen möchten ist <h1>Input</h1>
von Eingabe #Input
, Art von wie Markdown
, aber das ist für ein grundlegendes Redaktionssystem.
Ich sah in ein Regex Debugger
(here) und die Debug/Stack-Trace war, dass die erste Gruppe war nichts, und die Index-Gruppe war die #
.
Nach meinem Wissen sind die einzigen Dinge, die genommen und in Gruppen eingeteilt werden (mir wurde gesagt) (...)
's, und von left -> right
die Gruppen sind von $1 -> $x
markiert.
Entschuldigung für die überstrapazierten REGEX-Fragen.
FYI: Der 'i' Modifizierer ist hier redundant, und' .' mit 's' Modifizierer passt * beliebige * Zeichen, was ein Problem sein könnte, wenn der Text die Eingabe eine bereits markierte Zeichenfolge ist. –
Nicht, wie ich diese Regex konstruieren würde, nur auf das unmittelbare Problem konzentrieren und ich nehme an, das ist nicht der vollständige Code für die Frage, aber Ihr Punkt ist genommen. Ich werde daran arbeiten, meine Antwort für zukünftige Besucher zu verbessern. Vielen Dank. – yivi
Ja, Entschuldigung, da es nur ein Teil meiner Code-Basis ist, die den "i" -Operator genauso benötigt wie das "s", entferne ich das "s" von meinem für zukünftige Besucher, so dass es keine schlechte Übung gibt. @ WiktorStribiżew und Antwort OP – Jek