<?php
$string = "cityName</p>streetName</p>zipCode</p>unknownValue</p>anotherUnknownValue";
$keys = array("city","street", "zip");
$array = array_explode_with_keys("</p>", $keys, $string);
print_r($array);
function array_explode_with_keys($delimiter, $keys, $string){
$return = array();
$pieces = explode($delimiter,$string);
foreach($pieces as $i=>$piece){
if($i<count($keys)) {
$return[$keys[$i]] = $piece;
} else {
$return[$i] = $piece;
}
}
return $return;
}
?>
<div class="contentSection">
City
<br>
Street
<br>
ZIP
<p class="Separator">
</p>
City
<br>
Street
<br>
ZIP
$dom->loadHTML($html);
foreach ($dom->getElementsByTagName('div') as $element) {
if (strpos($element->getAttribute('class'), 'contentSection') !== false) {
$string = $element->C14N();
}
}
$keys = array("city","street", "zip");
$array = array_explode_with_keys("<br>", $keys, $string);
print_r($array);
function array_explode_with_keys($delimiter, $keys, $string){
$return = array();
$pieces = explode($delimiter,$string);
foreach($pieces as $i=>$piece){
if($i<count($keys)) {
$return[$keys[$i]] = $piece;
} else {
$return[$i] = $piece;
}
}
return $return;
}
?>
<div class="contentSection">
City
<br>
Street
<br>
ZIP
<p class="Separator">
</p>
City
<br>
Street
<br>
ZIP
<p class="Separator">
</p>
City
<br>
Street
<br>
ZIP
<?php // demo/temp_keesss.php
/**
* http://www.experts-exchange.com/questions/28714585/Add-key-to-array.html
*/
error_reporting(E_ALL);
// TEST DATA FROM THE POST AT E-E SHOWS A MOCKUP OF A FRAGMENT OF A WEB PAGE
$htm = <<<EOD
<div class="contentSection">
City
<br>
Street
<br>
ZIP
<p class="Separator">
</p>
City
<br>
Street
<br>
ZIP
<p class="Separator">
</p>
City
<br>
Street
<br>
ZIP
EOD;
// ISOLATE THE USEFUL INFORMATION
$arr = explode('<div class="contentSection">', $htm);
$htm = $arr[1];
$htm = str_replace('</p>', NULL, $htm);
$arr = explode('<p class="Separator">', $htm);
// COLLECT THE OUTPUT ARRAY OF USEFUL INFORMATION
$out = [];
// ITERATE OVER THE USEFUL INFORMATION TO REFINE THE SELECTION
foreach ($arr as $str)
{
$sub = [];
$str = trim($str);
$str = explode('<br>', $str);
$sub['city'] = trim($str[0]);
$sub['street'] = trim($str[1]);
$sub['zip'] = trim($str[2]);
$out[] = $sub;
}
// SHOW THE WORK PRODUCT
echo '<pre>';
print_r($out);
$outArray = array();
foreach ($dom->getElementsByTagName('div') as $div) {
foreach ($div->getElementsByTagName('p') as $par){
$html = $par->ownerDocument->saveHTML( $par );
$aryBR = explode('<br>', $html);
$outArray[] = array('c'=>$aryBR[0], 's'=>$aryBR[1], 'z'=>$aryBR[2])
}
}
Array
(
[0] => Array
(
[city] => City
[street] => Street
[zip] => ZIP
)
[1] => Array
(
[city] => City
[street] => Street
[zip] => ZIP
)
[2] => Array
(
[city] => City
[street] => Street
[zip] => ZIP
)
)
Obviously the answers would have been better if the test data had been better!
This is all very new to me so maybe you can add your code to mine and share it. Because I just get the same array this way. How do I add the keys.
Thanks