我需要删除它们之间的特定标签和文字。对于标签,我可以使用str_replace
但是对于文字,我尝试使用preg_replace
,但没有任何作用。
要修复的代码:
// ...
[tabs_item title=”My title”] some different text here... [/tabs_item]
[tabs_item title=”My Other title”] some different text here... [/tabs_item]
// ...
我的代码:
$pattern = "/[tabs_item[^>]*title=\"my txt\"](.*?)[\\/tabs_item]/si";
$replacement = '';
$fix1 = preg_replace($pattern, $replacement, $content2);
$search = array('[/tabs_item]');
$replace = array('');
$fix2 = str_replace($search, $replace, $fix1);
return $fix2;
答案 0 :(得分:0)
如果你没有正则表达式技能,你可以使用这样的爆炸功能来制作它;
<?php
$var = '// something
[tabs_item title=”My title”] some different text here... [/tabs_item]
[tabs_item title=”My Other title”] some different text here... [/tabs_item]
// something';
$first = explode('[tabs_item title=”My title”]',$var);
$start = $first[0];
$last = explode('[/tabs_item]',$first[1]);
$end = $last[count($last)-1];
echo $start.$end;
?>
答案 1 :(得分:0)
感谢您发布完整代码。由于您的内容中有html,因此需要稍微改变一下。
首先,因为您的内容包含/ char,我们需要将正则表达式分隔符更改为其他内容,以便它不会干扰。我把它改成了%。接下来,由于您使用的是多行字符串,我们需要在正则表达式上设置一个修饰符,以在。(点:所有字符)中包含换行符。通过在结束分隔符之后将“s”添加到模式的末尾来添加此修饰符。
此代码经过测试并为我工作。
$content = '
<p>[tabs] [tabs_item title="Description"]<br />
Lorem ipsum dolor sit amet</p>
<p>Lorem ipsum dolor sit amet<br />
Lorem ipsum dolor sit amet<br />
Lorem ipsum dolor sit amet</p>
<p>[/tabs_item] [tabs_item title="Zwroty"]</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce nec mauris nunc. Vestibulum elit urna, aliquet et urna et, sagittis blandit ligula.</p>
[/tabs_item]
<p>[tabs_item title="Peyment and shipping"]</p>
<p>Lorem ipsum dolor sit amet</p>
<p><b>Lorem ipsum dolor sit amet</b>Lorem ipsum dolor sit amet</p>
<p>Lorem ipsum dolor sit amet</p>
<p>Lorem ipsum dolor sit amet</p>
<p>Lorem ipsum dolor sit amet</p>
<p>Lorem ipsum dolor sit amet " <a href="#" target="_blank">url</a>"</p>
<p>[/tabs_item]</p>
<p>[/tabs]</p>';
$pattern = "%\[tabs_item[^\[]+\[/tabs_item\]%s";
$replacement = '';
$out = preg_replace($pattern, $replacement, $content);
echo $out;
结果:
<p>[tabs]
<p></p>
<p>[/tabs]</p>
要回答您的后续问题:如果您只想删除此标记:
[tabs_item title =“Peyment and shipping”] ... [/ tabs_item]
您可以将模式更改为:
$pattern = '%\[tabs_item title="Peyment and shipping"\][^\[]+\[/tabs_item\]%s';
结果是:
<p>[tabs] [tabs_item title="Description"]<br />
Lorem ipsum dolor sit amet</p>
<p>Lorem ipsum dolor sit amet<br />
Lorem ipsum dolor sit amet<br />
Lorem ipsum dolor sit amet</p>
<p>[/tabs_item] [tabs_item title="Zwroty"]</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce nec mauris nunc. Vestibulum elit urna, aliquet et urna et, sagittis blandit ligula.</p>
[/tabs_item]
<p></p>
<p>[/tabs]</p>