如何在PHP中读取html文件数据作为数组

时间:2016-02-09 08:29:19

标签: javascript php html

我的1个文件是city.html,其中包含以下代码

<script language="javascript">alert("Page Called"); </script>
'Bhubaneshwar', 'Orissa', 'India'

我的另一个文件index.php包含以下代码

$x=file_get_contents("city.html");
$x=array($x);
echo $x[0];

显示以下输出 'Bhubaneshwar','Orissa','India'

但我想要像这样的单字输出。

当我打印$x[0]时,它应为Bhubaneshwar

当我打印$x[1]时,它应为Orissa

当我打印$x[2]时,它应为India

4 个答案:

答案 0 :(得分:0)

使用explode将字符串转换为数组: -

// Remove script tag
$string = preg_replace('#<script(.*?)>(.*?)</script>#is', '', $x);  
// $string = str_replace(' ', '', $string); // Remove space from string
$string = preg_replace('/\s+/', '', $string); // Remove whitespace from string
// explode string 
$x = explode(',',$string);

希望它会对你有所帮助:)。

答案 1 :(得分:0)

尝试,

$x=file_get_contents("city.html");
$x=array($x);
$html = preg_replace('#<script[^>]*?.*?</script>#', '', $x);
$str = str_replace(', ', ',', $html);
$x = explode(',',trim($str[0]));
$remove[] = "'";
$result = str_replace( $remove, "", $x );
foreach($result as $cities)
{
   echo $cities . "<br>";
}

答案 2 :(得分:0)

这是首先删除前面脚本标记并将其余部分分解为数组的代码:

$x=array_pop(explode('</script>', $x));
$x=preg_split("/'\s*,\s*'/", trim(trim($x), "'"));

只有在您的HTML中保留该脚本标记时才需要这两个语句中的第一个,这似乎仅用于测试。

要显示结果,您可以这样做:

foreach($x as $item) {
    echo $item . "<br>";
}

输出:

  

布巴内斯瓦尔
  奥里萨邦
  印度

考虑

在HTML文件中包含此类数据格式是不常见的。 HTML旨在以用户友好的方式呈现数据,并且该表示不适合。

如果您是HTML文件的创建者,请考虑转换为JSON格式。在这种情况下,您的文件将被命名为city.json并且将具有此内容(需要双引号和括号):

["Bhubaneshwar", "Orissa", "India"]

代码将使用这样的JSON函数:

$json=file_get_contents("city.json");
$x=json_decode($json);

这种方式你真的使用标准,代码很紧凑。

您可以像以前一样再次显示 $ x 的内容:

foreach($x as $item) {
    echo $item . "<br>";
}

输出:

  

布巴内斯瓦尔
  奥里萨邦
  印度

如果您是该文件的创建者,并使用PHP创建它,那么也要使用JSON函数,如下所示:

$x = array("Bhubaneshwar", "Orissa", "India");
file_put_contents ("city.json", json_encode($x));

答案 3 :(得分:0)

首先,您需要删除脚本标记

$x = file_get_contents("city.html");
$x = preg_replace('%<script[^>]*>.*?</script>%/m', '', $x);

然后你可以使用explode:

$array = explode(',', $x);

然后你可以修剪和删除引号:

$array = array_map(function($item) {
   return preg_replace("/^'|'$/", trim($item));
}, $array);