İki PHP dizileri karşılaştırarak arama ve değiştirme nasıl

3 Cevap php

Ben (array) $opened içine tüm açılış etiketleri koyduk bu dize ve (array) $closed içine tüm kapanış etiketleri var, şöyle:

'<div>
    Test
 </div>

 <div>
    <blockquote>
       <p>The quick</p>
       <blockquote>
          <p>brown fox <span>jumps <span>over <img src="#" /> the'

Bu iki dizide sonuçları:

$opened =

array(8) {
  [0]=> string(3)  "div"         // Need removed
  [1]=> string(3)  "div"
  [2]=> string(10) "blockquote"
  [3]=> string(1)  "p"           // Need removed
  [4]=> string(10) "blockquote"
  [5]=> string(1)  "p"
  [6]=> string(4)  "span"
  [7]=> string(4)  "span"
}

$closed =

array(2) {
  [0]=> string(3) "div"
  [1]=> string(1) "p"
}

Ben bir şekilde söylemek gerekir:

$opened dizi ve $opened diziden kaldırın, o zamana kadar tekrarlayın ("div" edilir) $closed[0] İlk geçtiği bul Tüm $closed etiketler ("div ve "p") üstünden kaldırıldı $opened.

3 Cevap

Bu kimse yardımcı olur umarım. Bu ben ile geldi budur:

<?php

    for ( $i = 0; $i < $num_closed; $i++ )
    {
        unset ( $opened[ array_search( $closed[ $i ], $opened ) ] );
    }

?>

Ben de çalışmış bir for döngü ile geldi, ama $opened[$i] ve $closed[$n] bağımsız işlemek için vardı ve biraz daha kod oldu, bu yüzden sonuçta bu bir karar.

Bu sizin için ne arıyorsanız eğer emin değilim, ama bu aradığınız şey ilk örneğini kaldırır.

<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);

$opened_tags = array("div", "div", "blockquote", "p", "blockquote", "p", "span", "span");
$closed_tags = array("div", "p");

$find = "div";

$size = sizeof($closed_tags);
for($i=0; $i<$size; $i++) {
    if($closed_tags[$i] == $find){
    	unset($closed_tags[$i]);
    	break;
    }
}

echo "closed_tags with empty spaces: ".print_r($closed_tags, true)."<br /><br />";

$closed_tags = array_values($closed_tags);
echo "closed_tags array indexed correctly: ".print_r($closed_tags, true)."<br />";
?>

Ben senin soru söyleme, ancak amacı html kodu pasajı temizlemek için ise, neden sadece HTMLTidy uzantısı kullanamıyorum?

Tutorial