PHP expert |
|
Ik denk dat het is gelukt. Met array_diff.
Het zijn 2 bestanden:
1 met functies die worden gebruikt om de hoofdfuntie te ondersteunen, met een voorbeeld (dat als commentaar wordt geleverd). En dan een ander bestand met de uiteindelijke functie die 2 argumenten (2 strings in dit geval) accepteert en de gelijkenissen weg gooit. Met daarbij dan ook een voorbeeld. Het 1e bestand wordt hierin geinclude zodat er gebruik kan gemaakt worden van volgende functies:
- verdeelArray(gooit explode om een array maar voegt het 1e argument daarna bij elk element weer toe)
- verwijderLaatsteItem (verwijderd het laatste item van een array, was nodig om dat hij anders ambetant deed)
- htmlspecialcharsArray (gooit htmlspecialchars om elk element van een array, is nodig voor het voorbeeld)
- implode_2 (net als explode_2 kan het "" ontvangen als argument)
en dan de uiteindelijke functie:
- aftrekkenString (ontvangt 2 argumenten, en stuurt de verschillen terug)
verdeelArray.php
<?php
function verdeelArray($inputString, $element) {
$array = explode($element, $inputString);
for($i = 0; $i < count($array); $i++) {
$array[$i] = $element . $array[$i+1];
}
return verwijderLaatsteItem($array);
}
function verwijderLaatsteItem($ingevoerdeArray) {
for($i = 0; $i < count($ingevoerdeArray)-1; $i++){
$array[] = $ingevoerdeArray[$i];
}
return $array;
}
function htmlspecialcharsArray($inputArray){
for($i = 0; $i < count($inputArray); $i++) {
$inputArray[$i] = htmlspecialchars($inputArray[$i]);
}
return $inputArray;
}
function implode_2($array, $iets=""){
if($iets == "") {
$string = "";
for($i=0;$i<count($array);$i++){
$string .= $array[$i];
}
}
else {
$string = implode($iets, $array);
}
return $string;
}
$string = "<html><head><title></title></head><body></body></html>";
$string = verdeelArray($string, "<");
//print_r(htmlspecialcharsArray($string));
/*output:
Array (
[0] => <html>
[1] => <head>
[2] => <title>
[3] => </title>
[4] => </head>
[5] => <body>
[6] => </body>
[7] => </html>
)
*/
?>
<?php function verdeelArray($inputString, $element) { $array = explode($element, $inputString); for($i = 0; $i < count($array); $i++) { $array[$i] = $element . $array[$i+1]; } return verwijderLaatsteItem($array); } function verwijderLaatsteItem($ingevoerdeArray) { for($i = 0; $i < count($ingevoerdeArray)-1; $i++){ $array[] = $ingevoerdeArray[$i]; } return $array; } function htmlspecialcharsArray($inputArray){ for($i = 0; $i < count($inputArray); $i++) { } return $inputArray; } function implode_2($array, $iets=""){ if($iets == "") { $string = ""; for($i=0;$i<count($array);$i++){ $string .= $array[$i]; } } else { } return $string; } $string = "<html><head><title></title></head><body></body></html>"; $string = verdeelArray($string, "<"); //print_r(htmlspecialcharsArray($string)); /*output: Array ( [0] => <html> [1] => <head> [2] => <title> [3] => </title> [4] => </head> [5] => <body> [6] => </body> [7] => </html> ) */ ?>
aftrekkenString.php
<?php
require 'verdeelArray.php';
function aftrekkenString($string1, $string2) {
$array1 = verdeelArray($string1,"<");
$array2 = verdeelArray($string2,"<");
$array3 = array_diff($array1, $array2);
$array4 = array_diff($array2, $array1);
$array3 = implode_2("", $array3);
$array4 = implode_2("", $array4);
return htmlspecialchars($array3) . htmlspecialchars($array4);
}
$str1 = "<html>
<head></head>
<body>
<table>
<tr>
<td>
halo
</td>
</tr>
</table>
</body>
</html>";
$str2 = "<html>
<head></head>
<body>
<p>
Dit is een zin
</p>
</body>
</html>";
echo aftrekkenString($str1, $str2);
/*output:
<table>
<tr>
<td>
halo
</td>
</tr>
</table>
<p>
Dit is een zin
</p>
*/
?>
<?php require 'verdeelArray.php'; function aftrekkenString($string1, $string2) { $array1 = verdeelArray($string1,"<"); $array2 = verdeelArray($string2,"<"); $array3 = implode_2("", $array3); $array4 = implode_2("", $array4); } $str1 = "<html> <head></head> <body> <table> <tr> <td> halo </td> </tr> </table> </body> </html>"; $str2 = "<html> <head></head> <body> <p> Dit is een zin </p> </body> </html>"; echo aftrekkenString ($str1, $str2); /*output: <table> <tr> <td> halo </td> </tr> </table> <p> Dit is een zin </p> */ ?>
...deze jongen verveelt zich precies:p |