kenikavanbis
Terugkerende gebruiker
- Lid geworden
- 22 mei 2007
- Berichten
- 2.191
de aanroep van de splitter
nu wat is het probleem dat als er op <div> te veel tags en tekst komt de regex niet werkt dit op de plaats in regex "(?x)". maar wat het wel zou moeten worden om alle chars die er tussen zitten toe te laten is de vraag
PHP:
$string = "qmksjdfmks <h3> tekst van H3 </h3> <div> <ul> tekst van p1 </ul> <p> tekst van p2 </p> <p> tekst van p3 </p> qmksjdfmks <h3> tekst van H23 </h3> <p> tekst van p21 </p> <p> tekst van p22 </p> <p> tekst van p23 </p>";
print_r(datasplit($string));
nu wat is het probleem dat als er op <div> te veel tags en tekst komt de regex niet werkt dit op de plaats in regex "(?x)". maar wat het wel zou moeten worden om alle chars die er tussen zitten toe te laten is de vraag
PHP:
//public
function datasplit(&$source){
$x = preg_replace(array('#</p>#'),"</p> \n",$source);//upgrade finder (.*!(<p>|<ul>))
$x = preg_replace(array('#</ul>#'),"</ul> \n",$x);//upgrade finder (.*!(<p>|<ul>))
$regx = "#(<h\d>(?<name>.*)</h\d>.+)?".
"(?x)".
//"(([A-Za-z0-9\.\-\_\!\#\$\%\&\'\*\+\/\=\?\^\`\{\|\}]+))".
"((<p>|<ul>)(?<content>.*)(</p>|</ul>).*)#i";
//$regx = "#(<h\d>(?<name>.*)</h\d>.+)((<p>|<ul>)(?<content>.*)(</p>|</ul>))?#";
//$regx = "#(<h\d>(?<name>.*)</h\d>.+)?(<ul>(?<content>.*)</ul>)#";
preg_match_all($regx,$x,$result,PREG_PATTERN_ORDER);
$rest = array();
$name="";
if(isset($result['name'])&& $result['name']!="" && isset($result['content'])){//
foreach($result['name']as $key=>$named){
print "<br>key".$key." val".$named." ";
if($named!="" && $result['content'][$key]!=""){
$name = $named;
$rest[$name]= array();
}
if($name != ""){
array_push($rest[$name],$result['content'][$key]);
}
}
}else{
print_r($result);
}
return $rest;
}
Laatst bewerkt: