Php 替换一个<;br/>;带2个正则表达式
我有一根绳子Php 替换一个<;br/>;带2个正则表达式,php,regex,Php,Regex,我有一根绳子 $str = 'bob<br /><br />looked so good<br />tonight!'; $str='bob今晚看起来真好; 我想将只有一个的任何实例替换为两个 现在我已经 echo preg_replace('/(<br \/>\s*){1}/', '<br /><br />', $str); echo preg\u replace('/(\s*){1}/','',$str); 但这
$str = 'bob<br /><br />looked so good<br />tonight!';
$str='bob
今晚看起来真好;
我想将只有一个
的任何实例替换为两个
现在我已经
echo preg_replace('/(<br \/>\s*){1}/', '<br /><br />', $str);
echo preg\u replace('/(
\s*){1}/','
',$str);
但这是在bob之后放两个
,而它应该只放在good之后
任何帮助都会很好
编辑:输出应为
bob<br /><br />looked so good<br /><br />tonight!
bob
今晚看起来很好
!
基本上,您需要一个
标记,该标记不在前面,也不紧跟在后面。因此:
/(?<!<br \/>)<br \/>(?!<br \/>)/
/(?)
(?!
)/
这假设所有的
标记都是字面意义上的
,而不是
,
,甚至是
。为了更好地进行解析,您应该使用DOM解析器并查找另一个BR
节点之前或之后不紧跟另一个BR
节点的BR
节点。您指定要匹配一个
节点,并将其替换为两个
这不是您想要的-如果后面没有相同内容的第二个,您只想添加一个额外的
试一试
echo preg\u replace('/(
\s*){1}([^这将
中的任何数字(大于零)替换为两个:
print preg_replace('|(?:<br />)+|', '<br /><br />', $str);
打印预替换(“|”(?:
)+;
例如:
$str = 'bob<br /><br />looked so good<br />tonight!<br /><br /><br />Bye!';
print preg_replace('|(?:<br />)+|', '<br /><br />', $str);
# output: "bob<br /><br />looked so good<br /><br />tonight!<br /><br />Bye!"
$str='bob
今晚看起来很好!
再见;
打印preg_替换(“|”(?:
)+|,“
,$str”);
#输出:“鲍勃今晚看起来很好,再见!”
使用函数的第五个参数-count,包含匹配项…如果count大于1,则进行比较,
会保持不变吗?不要使用正则表达式来处理HTML,因为HTML不是一种常规语言。你最终会后悔的。使用HTML库。我不会添加HTML忘了它也就是说,我试图找到一个单词的1个实例,并用2个替换它。
print preg_replace('|(?:<br />)+|', '<br /><br />', $str);
$str = 'bob<br /><br />looked so good<br />tonight!<br /><br /><br />Bye!';
print preg_replace('|(?:<br />)+|', '<br /><br />', $str);
# output: "bob<br /><br />looked so good<br /><br />tonight!<br /><br />Bye!"