用PHP字符串替换文本

时间:2018-07-30 10:59:07

标签: php

我有

$text = '--ACT-- active --INA-- inactive';

我想用我的值替换--ACT--和--INA-

str_replace(array('--ACT--','--INA--'), array('<div class="wp"><b>1</b></div>','<div class="wp"><b>2</b></div>'), $text);

结果是

<div class="wp"><b>1</b></div> Active
<div class="wp"><b>2</b></div> inactive

但是我想在div内而不是在div之外添加有效无效文本,例如:

<div class="wp"><b>1</b> active</div>

我不想在str_replace中添加此文本,我想从$ text变量中获取文本,有帮助吗?

5 个答案:

答案 0 :(得分:3)

使用preg_replace并捕获ACT / INA之后的单词,并在其周围放置html。

$text = '--ACT-- active --INA-- inactive';

// Add html to active
$text = preg_replace("/--ACT-- (\w+)/" , '<div class="wp"><b>1</b>$1</div>',$text);

// Add html to inactive and echo
Echo preg_replace("/--INA-- (\w+)/" , '<div class="wp"><b>2</b>$1</div>',$text);

https://3v4l.org/DdaFt

这假设它仅是ACT之后的一个字。如果那是不正确的,请使用更相关的示例来更新您的问题。

答案 1 :(得分:0)

此模式将删除--之间的文本,并在您的<div>中插入以下文本:

$text = '--ACT-- active --INA-- inactive';

$new_text = preg_replace(
    '/((--[A-Z]{3}--) (\w+))/',
    '<div class="wp"><b>1</b> ${3}</div>',
    $text
);

echo $new_text;

答案 2 :(得分:0)

在不存在重复项的情况下调用preg_replace的替代方法(不建议使用)

TypeError: Cannot read property 'id' of undefined

答案 3 :(得分:0)

@JohnJack您可以通过执行https://3v4l.org/lj6ct

来使用str_replace
$text = '--ACT-- active --INA-- inactive user --EDI-- Banned user';
$text = str_replace(array('--ACT--','--INA--','--EDI--','%%'), array('<div class="wp"><b>1</b>','%%<div class="wp"><b>2</b>','%%<div class="wp"><b>3</b>','</div>'), $text.'%%');
print $text;
//prints: <div class="wp"><b>1</b> active </div><div class="wp"><b>2</b> inactive user </div><div class="wp"><b>3</b> Banned user</div>

这是一个很糟糕的主意,但是有效。

答案 4 :(得分:-1)

简单的解决方案:

function param($text, $name, $transformation) {
    return preg_replace("/.*$name +(\w+).*/",$transformation, $text);
}
$text = '--ACT-- active --INA-- inactive';

echo param($text,'--ACT--','<div class="wp"><b>1</b>${1}</div>');
//prints: <div class="wp"><b>1</b>active</div>

echo param($text,'--INA--','<div class="wp"><b>2</b>${1}</div>');
//prints: <div class="wp"><b>2</b>inactive</div>

基于此的有用解决方案是:

{{1}}