Причина в том, что он читает строку в целом. Если вы хотите, чтобы он разбирал все после буквенно-цифрового раздела, вам, возможно, придется выполнить команду like и закончить (explode ()); и выполните это до конца, чтобы убедиться, что он недействителен, а если он недействителен, то удалите его из уравнения, но тогда вам придется проверять конец для каждой возможной точки разнесения, т. е., -, ~ и т. д. .
С другой стороны, еще одна ловушка, с которой вы можете столкнуться, заключается в том, что в случае элемента или чего-либо с буквенно-цифровым значением он может просто проанализировать все, начиная с последнего включенного алфавитно-цифрового символа.
Извините, что это не сильно помогает, но я подумал, что мысли вслух помогают.