PHP - удалить из строки HEX c2a00a

110
10 августа 2019, 04:50

Есть результат вывода строки через функцию bin2hex :

0a0ac2a00a Кирпич полнотелый 6% К-1,0 250*120*65 0,320/3208,809,80

0a0a Кирпич полнотелый 6% К-1,4 250*120*88 0,345/25610800/14,5811800/15,93

0a0aКирпич полнотелый 12% К-1,0 250*120*65 0,320/3208,409,40

Строки в которых есть '0a0ac2a00a' и '0a0a ' - выводятся с каким то пробелом в начале строки на странице в кодировке utf-8. Не могу понять что это за hex-символы и как их удалить. Стандартными функциями, regex - пока результата не добился.

Вот код, который выводит результат:

$dom = new DOMDocument();
$html = $dom->loadHTMLFile('Sample_11_ReadWord2007.html');
$dom->preserveWhiteSpace = false; 
$tables = $dom->getElementsByTagName('table');
$lenght_max = $dom->getElementsByTagName('table')->length;
function replaceSpecial($str){
$chunked = str_split($str,1);
$str = ""; 
foreach($chunked as $chunk){
    $num = ord($chunk);
    // Remove non-ascii & non html characters
    if ($num >= 32 && $num <= 123){
            $str.=$chunk;
    }
}   
return $str;
} 
  for ($i=0; $i<$lenght_max; $i++) {
    //get all rows from the table
  $rows = $tables->item($i)->getElementsByTagName('tr'); 
  foreach ($rows as $row) 
  { 
      $cols = $row->getElementsByTagName('td'); 
      if (!preg_match('/кирпич/i',$cols->item(0)->nodeValue )){
   // echo the values 
      $str = $cols->item(0)->nodeValue;
      echo bin2hex($str);
      //echo replaceSpecial($str);
      echo ltrim ($cols->item(1)->nodeValue); 
      echo trim($cols->item(2)->nodeValue);
      echo trim($cols->item(3)->nodeValue);
      echo trim(preg_replace( '/[^0-9,.\s\/]/', '', $cols->item(4)->nodeValue ));
      echo trim(preg_replace( '/[^0-9,.\s\/]/', '', $cols->item(5)->nodeValue )).'</br>';
      }
    }  
 }

Ссылка на файл html

Answer 1

Касаемо пробелов перед "кирпичами" это были 0xc2a0 (&npsp - No Break Space), а остальные 0d0a202020 это банальные \r\n (0x0D 0x0A ) и пробел (0x20).

Решение - замените

echo ltrim($cols->item(1)->nodeValue);

на

echo preg_replace('/\xc2\xa0/','',ltrim($cols->item(1)->nodeValue));
READ ALSO
PHP Получить переменную из другого файла, не выполняя прочих функций

PHP Получить переменную из другого файла, не выполняя прочих функций

В одном файле, скажем 1php формируется переменная, номер заказа:

123
оптимизация работы с API

оптимизация работы с API

Есть сайт, при загрузке одной страницы идут несколько десятков одинаковых запросов к апи(/api/products, /api/objects), нужно сделать оптимизацию запросов...

116
Кодировать строку UTF-8 в URL-код php, js

Кодировать строку UTF-8 в URL-код php, js

Решение возможно на php и\или js

100