我有以下代码,它从我的wordpress博客中获取类别,并用管道替换所有换行符。
<?php $variable = wp_list_categories('style=none&echo=0'); ?>
<?php $variable = str_replace('<br />', ' | ', $variable); ?>
<?php echo $variable; ?>
代码有效 - 但是我需要忽略最后一次出现。 有什么方法吗?
谢谢!
答案 0 :(得分:2)
另一种方法是使用|
获取最后一个管道strrpos
字符,一旦找到,只需使用字符串索引删除它,然后使用substr_replace
并将其替换为{ {1}}再次:
<br/>
旁注:这将是一个肮脏的解决方案,但如果你有更复杂的操作要做,最好只使用HTML解析器,$variable = str_replace(array('<br/>', '<br />', '<br>'), '|', $variable);
$last_pipe = strrpos($variable, '|');
if($last_pipe !== false) {
$variable[$last_pipe] = ''; // remove
$variable = substr_replace($variable, '<br/>', $last_pipe, 0); // replace
}
echo $variable;
特别是与{{DOMDocument
一起使用1}}与回归。
->replaceChild
答案 1 :(得分:1)
尝试使用rtrim()
。它将从字符串中删除最后一个|
。
echo rtrim($variable, '|');
<强>更新强>
$str = "hhh|yyy|YY|ll";
$last = strrpos($str, '|');
$part = rtrim(substr($str, 0, $last), '|');
if($last < strlen($str))
$part .= substr($str, $last + 1), (strlen($str) -$last));
echo $part;
答案 2 :(得分:0)
将str_replace
与类别变量一起使用时,会返回类别|
,并在类别名称之前用空格分隔
因此您可以删除最后两个字符space
,第二个字符为|
。{/ p>
$variable = wp_list_categories('style=none&echo=0');
$variable = str_replace('<br />', '|', $variable);
var_dump($variable);
echo substr($variable,0,strlen($variable)-2);
如果您在类别名称之前和之后使用带空格的管道,请使用-4
代替-2