提问人:Jeff 提问时间:11/15/2009 最后编辑:Jeff 更新时间:11/16/2009 访问量:209
如何通过比较两个PHP数组进行搜索和替换
How to search and replace by comparing two PHP arrays
问:
我有这个字符串,我把所有的开始标签和所有的结束标签都放进去,就像这样:(array) $opened
(array) $closed
'<div>
Test
</div>
<div>
<blockquote>
<p>The quick</p>
<blockquote>
<p>brown fox <span>jumps <span>over <img src="#" /> the'
结果为这两个数组:
$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"
}
我需要以某种方式说:
在数组中找到第一个出现的 (即 ) 并将其从数组中删除,然后重复上述步骤,直到从 的顶部删除所有标记 ( 和 )。$closed[0]
"div"
$opened
$opened
$closed
"div
"p"
$opened
答:
0赞
lyscer
11/16/2009
#1
我不确定这是否是您要查找的内容,但这将删除您要查找的东西的第一个实例。
<?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 />";
?>
1赞
Jeff
11/16/2009
#2
希望这对某人有所帮助。这是我想出的:
<?php
for ( $i = 0; $i < $num_closed; $i++ )
{
unset ( $opened[ array_search( $closed[ $i ], $opened ) ] );
}
?>
我还想出了一个有效的循环,但你必须独立操作 和,而且它需要更多的代码,所以我最终决定使用这个循环。for
$opened[$i]
$closed[$n]
0赞
Cups
11/16/2009
#3
我无法从您的问题中看出,但是如果您的目标是清理一段 html 代码,为什么不简单地使用 HTMLTidy 扩展呢?
评论
preg_split