替换字符串中的项目以获取上次出现的异常

时间:2015-05-05 12:19:58

标签: php wordpress str-replace

我有以下代码,它从我的wordpress博客中获取类别,并用管道替换所有换行符。

<?php $variable = wp_list_categories('style=none&echo=0'); ?>
<?php $variable = str_replace('<br />', ' | ', $variable); ?>
<?php echo $variable; ?>

代码有效 - 但是我需要忽略最后一次出现。 有什么方法吗?

谢谢!

3 个答案:

答案 0 :(得分:2)

另一种方法是使用|获取最后一个管道strrpos字符,一旦找到,只需使用字符串索引删除它,然后使用substr_replace并将其替换为{ {1}}再次:

<br/>

Sample Output

旁注:这将是一个肮脏的解决方案,但如果你有更复杂的操作要做,最好只使用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

Sample Output

答案 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