好的,我现在已经尝试了好几次了。我仍然无法弄明白。
这是我的问题。我想接受任何
<br><br>
并将其转为<br>
所以这就是我所做的事
$test =
ereg_match("/<br><br>/", "<br>", "<br><br>Test<br><br>");
echo $test;
它产生ereg_match("/<br><br>/", "<br>", "<br><br>Test<br><br>");
而不是$test == "Test"
有任何帮助吗?然后我想扩展它,以便任何$test = "<br>Test<br>"
所以任何两个空间分隔的可以变成1.任何帮助?
答案 0 :(得分:2)
您可以使用str_replace
<?php
$str = "<br><br>Test<br><br>";
echo str_replace("<br><br>", "<br>", $str);
<强>更新强>
示例:
要替换2个或更多个br(无限间距)...你可以做preg_replace:
<?php
$str = "<br><br > <br><br>Test<br ><br>";
echo preg_replace("/(\s*<br\s*>)+/", "<br>", $str);
答案 1 :(得分:0)
也许不是你所追求的答案,但使用str_replace将比正则表达式更有效。
即:$test = str_replace('<br><br>', '<br>', $sourceString);
顺便说一下,我也很想在这个时代用<br>
替换<br />
标签。 : - )
答案 2 :(得分:0)
你的函数名中肯定有一个拼写错误。 p reg_ *函数主要取代旧的 e reg_函数。
你的第二个正则表达式应写成:
print preg_replace("#<br\s*/?>\s*<br\s*/?>#", "<br>", "<br><br>Test");
?
是{0,1}
的简写,并且使用#
作为分隔符,可以省去正斜线的无关转义。
答案 3 :(得分:0)
你可以试试这个:
preg_replace("#<br[^>]*><br[^>]*>#", "<br>", "<br><br>Test<br><br>");
Both these lines produce same output:
var_dump(preg_replace("#<br[^>]*><br[^>]*>#", "<br>", "<br><br>Test<br><br>"));
var_dump(preg_replace("#<br[^>]*><br[^>]*>#", "<br>", "<br /><br>Test<br><br>"));
OUTOUT: string(12) "<br>Test<br>"
答案 4 :(得分:0)
完全由可选空格分隔的2 BR:
$str = preg_replace('/<br[^>]*>(?:\s*<br[^>]*>){1}/', '<br>', $str);
由可选空格分隔的2个或更多BR:
$str = preg_replace('/<br[^>]*>(?:\s*<br[^>]*>){1,}/', '<br>', $str);
答案 5 :(得分:0)
正如Mike Lewis所说,如果您不需要考虑输入字符串的变化,请使用字符串操作。另一方面,如果您想将多个<br>
或<br/>
标记折叠到一个标记中,允许在其中包含空格,这应该适合您:
$result = preg_replace('#(<\s*br\s*(/\s*)?>){2,}#', '<br>', $subject);
我不完全确定你的版本无法正常工作,但如果上述版本不起作用,可能会有其他内容发生。
答案 6 :(得分:0)
找到答案。我太蠢了。
在另一个文件中我有
define("ALLOWED_TAGS", "");
...
...
...
define("ALLOWED_TAGS", "my tags blah blah blah");
抱歉浪费每个人的时间。 GG
答案 7 :(得分:0)
尽可能使用str_replace。鉴于您对只需1 <br><br><br><br><br><br><br><br><br><br><br>
替换<br>
等内容的评论,请执行以下操作:
while(strpos($inputstring,'<br><br>')) //while <br><br> can be found in string
{
$inputstring = str_replace('<br><br>', '<br>', $inputstring); //replace <br><br>
}
PHP对正则表达式的实现很糟糕,并且它们在PHP中花费的时间比它的字符串操作要长得多。比较整整一个数量级更长的时间。
要捕捉标签的各种潜在问题,您可以执行以下操作:
$searchArray = array('<br><br>','<br /><br />','other potential spellings');
while(stripos($inputstring,$searchArray)) //while case insensitive search strings are in string
{
$inputstring = str_ireplace($searchArray, '<br />', $inputstring); //replace case insensitive strings
}
您也可以仅使用strip_tags
删除所有不需要的标记:
$inputstring = strip_tags($inputstring, '<p><a><b><i><other allowed tags>');
但是,当然,这会删除所有<br>
代码。