login  Naam:   Wachtwoord: 
Registreer je!
 Forum

strings met elkaar vergelijken

Offline Dolfje - 17/07/2005 14:53 (laatste wijziging 17/07/2005 16:59)
Avatar van DolfjeGouden medailleGouden medailleGouden medaille

PHP ver gevorderde
Zit met een klein (groot) probleem.

ik krijg 2 strings:
<html>
<body>
blaat
<table>
<tr><td>blaat<td>blaat2
</table>
</body>

en:
<html>
<body>
blaat
<table>
<tr><td>blaat<td>blaat2
<tr><td>blaat3<td>blaat5
<tr><td>blaat4<td>blaat6
</table>
</body>

en nu wil ik het verschil van die 2 strings hebben, maar hoe doe ik dat?
dus wat ik wil:
array( "<tr><td>blaat<td>blaat2
<tr><td>blaat3<td>blaat5
<tr><td>blaat4<td>blaat6", "<tr><td>blaat<td>blaat2")

7 antwoorden

Gesponsorde links
Offline Thomas - 17/07/2005 16:21 (laatste wijziging 17/07/2005 16:21)
Avatar van Thomas Moderator HTML klopt sowieso niet .
<tr> en <td> hebben ook afsluitende tags...
Offline nemesiskoen - 17/07/2005 16:25
Avatar van nemesiskoen Gouden medaille

PHP expert
je lost het half en half zelf op.

Ik zou zeggen, exploden bij elke nieuwe regel en dan met array_unique() de verschillen weggooien en weer een volledige string maken.
Offline Dolfje - 17/07/2005 16:59 (laatste wijziging 17/07/2005 17:00)
Avatar van Dolfje Gouden medailleGouden medailleGouden medaille

PHP ver gevorderde
Citaat:
HTML klopt sowieso niet .
<tr> en <td> hebben ook afsluitende tags...

dat hoeft niet.
http://www.hand...en/td.html
http://www.hand...en/tr.html

@nemiseskoen, dat had ik ook in gedachten, maar volgende werkt dan niet goed:
<html>
<body>
blaat
<table><tr><td>blaat<td>blaat2<tr><td>blaat3<td>blaat5<tr><td>blaat4<td>blaat6</table>
</body>
Offline nemesiskoen - 17/07/2005 17:06
Avatar van nemesiskoen Gouden medaille

PHP expert
eploden op < en dan bij elk element < toevoegen?
Offline SH4D3H - 17/07/2005 17:06
Avatar van SH4D3H PHP beginner Ik denkt dat FangorN bedoelt dat dat in xHTML wel moet!
Elke tag moet daar afgesloten worden.

En verder zou je met loops elk teken kunnen vergelijken toch?
Ik zal, als je dan nog geen oplossing hebt, na het eten 'ns wat proberen 
Offline Dolfje - 17/07/2005 17:12
Avatar van Dolfje Gouden medailleGouden medailleGouden medaille

PHP ver gevorderde
Citaat:
En verder zou je met loops elk teken kunnen vergelijken toch?


Dat was mijn laatste uitweg, als er geen andere betere manieren waren 
Offline nemesiskoen - 17/07/2005 17:37 (laatste wijziging 17/07/2005 17:39)
Avatar van nemesiskoen Gouden medaille

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
  1. <?php
  2.  
  3. function verdeelArray($inputString, $element) {
  4.  
  5. $array = explode($element, $inputString);
  6.  
  7. for($i = 0; $i < count($array); $i++) {
  8.  
  9. $array[$i] = $element . $array[$i+1];
  10.  
  11. }
  12.  
  13. return verwijderLaatsteItem($array);
  14.  
  15. }
  16. function verwijderLaatsteItem($ingevoerdeArray) {
  17.  
  18. for($i = 0; $i < count($ingevoerdeArray)-1; $i++){
  19.  
  20. $array[] = $ingevoerdeArray[$i];
  21.  
  22. }
  23.  
  24. return $array;
  25.  
  26. }
  27. function htmlspecialcharsArray($inputArray){
  28.  
  29. for($i = 0; $i < count($inputArray); $i++) {
  30.  
  31. $inputArray[$i] = htmlspecialchars($inputArray[$i]);
  32.  
  33. }
  34.  
  35. return $inputArray;
  36.  
  37. }
  38. function implode_2($array, $iets=""){
  39. if($iets == "") {
  40. $string = "";
  41. for($i=0;$i<count($array);$i++){
  42. $string .= $array[$i];
  43. }
  44. }
  45. else {
  46. $string = implode($iets, $array);
  47. }
  48. return $string;
  49. }
  50.  
  51. $string = "<html><head><title></title></head><body></body></html>";
  52. $string = verdeelArray($string, "<");
  53. //print_r(htmlspecialcharsArray($string));
  54.  
  55. /*output:
  56.  
  57. Array (
  58. [0] => <html>
  59. [1] => <head>
  60. [2] => <title>
  61. [3] => </title>
  62. [4] => </head>
  63. [5] => <body>
  64. [6] => </body>
  65. [7] => </html>
  66. )
  67.  
  68. */
  69.  
  70. ?>


aftrekkenString.php
  1. <?php
  2.  
  3. require 'verdeelArray.php';
  4.  
  5. function aftrekkenString($string1, $string2) {
  6.  
  7. $array1 = verdeelArray($string1,"<");
  8. $array2 = verdeelArray($string2,"<");
  9.  
  10. $array3 = array_diff($array1, $array2);
  11. $array4 = array_diff($array2, $array1);
  12. $array3 = implode_2("", $array3);
  13. $array4 = implode_2("", $array4);
  14.  
  15. return htmlspecialchars($array3) . htmlspecialchars($array4);
  16.  
  17. }
  18.  
  19. $str1 = "<html>
  20. <head></head>
  21. <body>
  22. <table>
  23. <tr>
  24. <td>
  25. halo
  26. </td>
  27. </tr>
  28. </table>
  29. </body>
  30. </html>";
  31.  
  32. $str2 = "<html>
  33. <head></head>
  34. <body>
  35. <p>
  36. Dit is een zin
  37. </p>
  38. </body>
  39. </html>";
  40.  
  41. echo aftrekkenString($str1, $str2);
  42.  
  43. /*output:
  44. <table>
  45. <tr>
  46. <td>
  47. halo
  48. </td>
  49. </tr>
  50. </table>
  51. <p>
  52. Dit is een zin
  53. </p>
  54. */
  55. ?>


...deze jongen verveelt zich precies:p
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.499s