Rolf B: php8: Fatal error: Uncaught Error: Undefined constant "int" in...

Beitrag lesen

Hallo Jörg,

MUSST du das per Regex machen? Musst Du nicht vielmehr nach dem Wort int suchen?

Wenn ich das im Screenshot bei JB richtig sehe, gibt's im Suchfeld den Suchtext, ein "Aa" und ein "W". Ich würde unterstellen, dass "Aa" bedeutet, dass er case-sensitive suchen soll und "W", dass er ganze Worte suchen soll. Das ".*" bedeutet Regex - aber das kannst Du dafür auslassen.

Wenn Du unbedingt Regex willst (ich weiß, willst Du nicht), könntest Du mit \b arbeiten, das ist "Word Boundary": Eine Suche nach \bint\b würde ebenfalls ganze Worte suchen.

Wenn Du auf diese Weise int durch "int" ersetzt, musst Du auf den Funktionskontext nicht mehr achten.

Eine Regex für Funktionsaufrufe ist nämlich eine heikle Sache, denn Regex ist für diese Aufgabe eigentlich eine Nummer zu klein. Man braucht einen Parser.

foo(3, int) ist unproblematisch.

Aber was ist mit foo(bar(7, "huhu"), int)? Das Finden der schließenden rechten Klammer zu foo( ist dann nicht mehr so einfach.

Und bist Du sicher, dass Du dieses int nur im Kontext eines Funktionsarguments verwendest? Könnte auch sowas hier passieren?

$format = int;
$wert = 12.3;

tuwas($wert, $format);

Die Suche nach dem Wort int ist da deutlich einfacher.

Die andere Frage ist, welche "bösen Wörter" Du außer int noch im Sourcecode hast. Wenn phpStorm so gut ist, wie JetBrains behauptet (bei 90€/Jahr sollte er das sein), dann müsste es einen Linter geben, der Dir eine Codeanalyse macht und über das ganze Projekt alle Fehler dieser Art ausspuckt.

Rolf

--
sumpsi - posui - obstruxi