我的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
答案 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);