preg_match ( PHP ) :报告 *FIRST* 冲突字符并停止操作



据说我的字符串是:

$a = 'abc-def";

我只想要我的字符串中的 A-Z。

但我想让用户知道什么"坏"字符使他们的字符串"坏"。

我可以这样做:

$conflict = preg_replace('/[a-zA-Z0-9 .]/', '', $a);
echo "the conflict was: $conflict";

但是如果我的字符串很大......假设一个充满大量文本的文档......那么上面的代码将遍历整个文档并显示所有冲突的字符。

我希望它在只找到 1 个冲突字符后停止。

这样使用的 CPU/内存/资源更少。

换句话说。

$a = 'abc-,def";

在此示例中,它应该停止并指示冲突为"-"

而不是报告冲突是:"-,"

因为一旦它看到"-",它就应该停止寻找了。

目标是不使用太多资源。

更多信息:

这个想法是从左到右读取一个字符串(我想),一旦检测到一个不遵守 a-z 和 0-9 定律的字符。 进程将被终止,并且已找到的字符串将被报告

您可以执行以下操作:

if (preg_match("/[^a-z0-9]/i", $a, $match)) :
  echo "Conflict was: $match[0]";

逻辑:检查a-z0-9以外的字符,如果有匹配项,请打印响应。

最新更新