preg_match 在生成器中有效,但在脚本中无效

preg_match works in builder, but not in script

我正在创建一个正则表达式 https://www.phpliveregex.com/#tab-preg-match

代码如下:

$input_line = 'Sector(s) : Basic Materials Industry : Gold Full-time employees :  ';
preg_match('/Industry : (.*) Full-time employees :/', $input_line, $output_array);

在在线工具中,结果符合预期,是“黄金”。

然而在我的代码中这并没有发生:

echo preg_match('/Industry : (.*) Full-time employees :/', $arr[5], $industry_arr);

returns0.

数组 $arr 如下所示:

Array ( [0] => [1] => [2] => [3] => [4] => [5] => Sector(s) : Basic Materials Industry : Gold Full-time employees : [6] => [7] => )

虽然在开发人员工具中我的数组看起来像这样,但我感到困惑:

(
    [0] => 
    [1] => 
    [2] => 
    [3] => 
    [4] => 
    [5] => Sector(s) : Basic Materials 
Industry : Gold 
Full-time employees :\  
    [6] => 
    [7] => 
)

如果我执行 echo $arr[5],我会得到以下信息:

Sector(s) : Basic Materials Industry : Gold Full-time employees :

我想知道非中断 space 是否导致这里出现问题?

提前致谢

问题出在   字符上。

很遗憾,此处发布的解决方案不起作用 https://www.php.net/manual/en/function.trim.php

有效的是:

  $string = htmlentities($arr[5], null, 'utf-8');
  $clean_string = str_replace(" ", "", $string);
  $clean_string = html_entity_decode($clean_string);

我在这里找到的: replace   characters that are hidden in text

这会将字符串清理为“正常”字符串,并且 运行 正则表达式按预期工作。