请大家我只是想让用户伪装写html,所以要写一个链接,他们只需要写下面的内容:
#link webpage.php #linktoken #linktext Click here linktext# link#
这相当于编写以下html:
<a href="webpage.php">Click here</a>
#link
将更改为<a href="
#linktoken
将更改为">
#linktext
和linktext#
将更改为""
link#
将更改为</a>
#link
和#linktoken
之间的文字将被保留
这将给我们留下以下内容:
<a href=" webpage.php ">Click here</a>
最后我要删除&#34; webpage.php&#34;这个词之前和之后的空格。这将给我带来理想的结果:
`<a href="webpage.php">Click here</a>`
任何解决方案?提前谢谢。
答案 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;
}
}