В моем двумерном массиве значение ключа массива [1] пуст, а значение имени ключа [4], [5], [6], [7 ], [8] предположим, что пуст, но он показывает, что в значениях массивов есть строка (2). Я думаю, что две строки могут быть двумя пробелами, и я пробовал различные методы, такие как preg_replace, str_replace, trim, array_map, array_filter, не удалять или не удалять два пробела, все функции, которые я использовал, не обнаружены что два пространства в виде пробелов. Кроме того, я также пытаюсь использовать preg_replace, str_replace, чтобы заменить два пробела другой строкой. Но меняются только значения массива и имя ключа [1] ... Я не знаю, почему две строки не распознаются как пробелы. Кроме того, я также попытался перепечатать те же массивы в новом php-файле и отладить его, заменив значения массива ключей [4], [5], [6], [7], [8] двумя пробелами. Тем не менее, функция, способная обнаруживать, что все это пробелы, но следующие массивы, я размещаю здесь два пробела вместо пробелов, очевидно, что они одни и те же.PHP не удаляет пробелы из массивов
[1]=>
array(9) {
[0]=>
string(5) "Johor"
[1]=>
string(0) ""
[2]=>
string(10) "KotaTinggi"
[3]=>
string(3) "29*"
[4]=>
string(2) " "
[5]=>
string(2) " "
[6]=>
string(2) " "
[7]=>
string(2) " "
[8]=>
string(2) " "
}
Вот код, который я использовал. Массивы соскабливаются с помощью завитка с веб-сайта.
<?php
$ch = curl_init("http://apims.doe.gov.my/v2/hour3_2017-01-31.html");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$page = curl_exec($ch);
$dom = new DOMDocument();
libxml_use_internal_errors(true);
$dom->loadHTML($page);
libxml_clear_errors();
$xpath = new DOMXpath($dom);
$data = array();
$table_rows = $xpath->query('//tr');
foreach ($table_rows as $row => $tr) {
foreach ($tr->childNodes as $td) {
$data[$row][] = preg_replace('/\s+/', '', trim($td->nodeValue," "));
}
}
var_dump($data);
?>
Я также пытаюсь с этим. Но все они не работают. Любой профессионал может мне помочь? или дать мне некоторое решение.
$data[$row][] = preg_replace('/\s+/', '', str_replace(' ','',$td->nodeValue));
Я вижу специальные символы в полях типа 'Â'. –
@Suchit Как я могу удалить его? Я использую preg_replace с \ s может удалить его. – SinB
, если вы ожидаете только числа и символы, которые вы можете использовать: 'preg_replace ("/[^ a-zA-Z0-9]/"," ", $ td-> nodeValue);' –