如何用PHP中的给定字符串中的给定替换替换特定单词的所有出现

时间:2017-08-24 05:27:51

标签: php

请大家我只是想让用户伪装写html,所以要写一个链接,他们只需要写下面的内容:

#link webpage.php #linktoken #linktext Click here linktext# link#

这相当于编写以下html:

<a href="webpage.php">Click here</a>
  • 此处#link将更改为<a href="
  • #linktoken将更改为">
  • #linktextlinktext#将更改为""
  • link#将更改为</a>
  • #link#linktoken之间的文字将被保留

    这将给我们留下以下内容:

    <a href=" webpage.php ">Click here</a>

最后我要删除&#34; webpage.php&#34;这个词之前和之后的空格。这将给我带来理想的结果:

`<a href="webpage.php">Click here</a>`

任何解决方案?提前谢谢。

2 个答案:

答案 0 :(得分:2)

首先,我会说我正在为这将为您的用户提供的体验感到满意。用户想要通过此卷积只是为了输入超链接?

除此之外,以下是三种方法:

代码:(Demo

$translations=['#link '=>'<a href="',' #linktoken'=>'">',' #linktext '=>'',' linktext#'=>'',' link#'=>'</a>'];
$string='Here is a test: #link webpage1.php #linktoken #linktext Click here 1 linktext# link# and a second: #link webpage2.php #linktoken #linktext Click here 2 linktext# link#';
echo strtr($string,$translations);
echo "\n\n";
echo str_replace(array_keys($translations),$translations,$string);
echo "\n\n";
echo preg_replace('/#link (.*?) #linktoken #linktext (.*?) linktext# link#/','<a href="$1">$2</a>',$string);

输出:

Here is a test: <a href="webpage1.php">Click here 1</a> and a second: <a href="webpage2.php">Click here 2</a>

Here is a test: <a href="webpage1.php">Click here 1</a> and a second: <a href="webpage2.php">Click here 2</a>

Here is a test: <a href="webpage1.php">Click here 1</a> and a second: <a href="webpage2.php">Click here 2</a>

答案 1 :(得分:0)

您需要将string拆分为array " "For each中的array项,您需要检查是否为关键字,如果是,请trim将其替换为相应的替代品。

<强> 1。分裂:

$strArray = explode(" ", $input);

<强> 2。检查关键字:

$output = "";
foreach ($strArray as $key => $value) {
    if ((strpos($value, "#") !== false) && (strpos($value, "link") !== false)) {
        $val = trim($value);
        if ($val === "#link") $output .= '<a href="';
        else if ($val === "#linktoken") $output .= ">";
        else if (($val === "#linktext") || ($val === "linktext#")) $output .= "";
        else if ($val === "link#") $output .= "</a>";
    } else {
        $output .= ((strlen($output) === 0) ? " " : "") . $value;
    }
}