我有一个通过函数生成的字符串。
$string = function();
它产生类似的东西:
$string = '<ul><li><a href="">Test</a>(10)</li>';
我的问题是,如何将(10)
部分移到锚标记的末尾,所以我们有:
$string = '<ul><li><a href="">Test (10)</a></li>';
我想对列表项中的所有锚标记执行此操作。
适当的PHP方法是什么?
答案 0 :(得分:3)
只需使用srt_replace
函数作为字符串变量,如下所示:
if(strpos($string,"</a>")) {
$string = str_replace('</a>',' ', $string);
// output <ul><li><a href="">Test'(10)</li>
echo $string = str_replace('</li>','</a></li>', $string);
// output <ul><li><a href="">Test (10)</a></li>
}
答案 1 :(得分:0)
使用HTML DOM可以更改/修改元素值。
例如,
<?php
$string = '<ul><li><a href="test.php">Test</a>(10)</li></ul>';
echo $string; // Old strings.
$dom_document = new DOMDocument();
$dom_document->loadHTML($string);
$new_string = "";
foreach($dom_document->getElementsByTagName('ul') as $ul){ // For all ul.
$new_string .= "<ul>";
foreach($ul->childNodes as $li){ // For all li.
$new_string .= "<li>";
$i=0;
foreach($li->childNodes as $a){
if(isset($a->attributes[0]->value)){
$href = $a->attributes[0]->value;
}
if($i===0){
$new_string .= '<a href="'.$href.'">';
}
$new_string .= $a->nodeValue;
$i++;
}
$new_string .= "</a>";
$new_string .= "</li>";
}
$new_string .= "</ul>";
}
echo $new_string; // New generated strings.
?>
请参阅Fiddle。