read - replace - output | Wat is overzichtelijk/handig?
Ik ben bezig met een script wat het volgende moet kunnen doen:
- (html)file openen en inhoud in $string zetten
- $string lezen en bepaalde <div id="voorbeeld">..</div> (meerdere div's) er uit filteren
- Inhoud van div lezen en bijvoorbeeld: src="plaatje.jpg" vervangen door src="beterplaatje.jpg". De rest van <img /> moet hetzelfde blijven.
- Output orginele $string + bovenstaande veranderiningen echo'en..
De file wordt inmiddels ingeladen en in $theData gezet.
Nu heb ik het volgende gedaan:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// Function to select specific TAG from file
function getTag($string, $tagname, $tagid) {
$pattern = "/<$tagname class=$tagid>(.*?)<\/$tagname>/";
preg_match($pattern, $string, $matches);
if (!null==($matches)) {
return $matches[1];
} else {
//Niet aangegeven $tagid worden aan array $notUsedTags toegevoegd
global $notUsedTags;
$addthis = str_replace('"','',$tagid);
$notUsedTags[] = $addthis;
}
} //end
function getTag($string, $tagname, $tagid) {
$pattern = "/<$tagname class=$tagid>(.*?)<\/$tagname>/";
preg_match($pattern, $string, $matches);
if (!null==($matches)) {
return $matches[1];
} else {
//Niet aangegeven $tagid worden aan array $notUsedTags toegevoegd
global $notUsedTags;
$addthis = str_replace('"','',$tagid);
$notUsedTags[] = $addthis;
}
} //end
Code (php)
1
2
3
4
2
3
4
//Code to get info from <IMG />
$patternSrc = '/<img.*?src=([\'"])([^"\1]+)\1/i';
preg_match($patternSrc, $string, $matches);
print_r($matches);
$patternSrc = '/<img.*?src=([\'"])([^"\1]+)\1/i';
preg_match($patternSrc, $string, $matches);
print_r($matches);
De output is dan:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
Array
(
[0] => <img src='http://www.surfstitch.com/images/catalog/live/imageLibrary/FMWHYBGU-ELEMENT-1600T.jpg'
[1] => '
[2] => http://www.surfstitch.com/images/catalog/live/imageLibrary/FMWHYBGU-ELEMENT-1600T.jpg
)
(
[0] => <img src='http://www.surfstitch.com/images/catalog/live/imageLibrary/FMWHYBGU-ELEMENT-1600T.jpg'
[1] => '
[2] => http://www.surfstitch.com/images/catalog/live/imageLibrary/FMWHYBGU-ELEMENT-1600T.jpg
)
Ik wil behoorlijk wat data "on-the-fly" vervangen. Niet alleen data in <IMG /> Wat is nu handig? Gebruik maken van bovenstaande code in soortgelijke vorm of het compleet anders aan te pakken en bijvoorbeeld direct preg_replace te gebruiken?
Snelheid is niet een grote issue, wel stabiliteit.
Heeft iemand hier goede ideeën over? Alvast bedankt voor de moeite..!
Met PHP kan je dat met DOMDocument of met SimpleXML doen -> php.net
Bedankt voor de tip. Ik duik er dieper op in.
Of zoek op htmlpurifier