Php 删除带有Preg_Replace的文本
我有一些文本,如以下示例:Php 删除带有Preg_Replace的文本,php,preg-replace,Php,Preg Replace,我有一些文本,如以下示例: Some Text Here [code]Some link[/code] Text [code]Link[/code] Other Text [code]Another Link[/code] Other Text1 我想删除上面、下面和两个代码之间的所有文本。以下是我想要的输出示例: [code]Some Link[/code] [code]Link[/code] [code]Another Link[/code] 我使用preg\u replace删除第一个
Some Text Here
[code]Some link[/code]
Text
[code]Link[/code]
Other Text
[code]Another Link[/code]
Other Text1
我想删除上面、下面和两个代码之间的所有文本。以下是我想要的输出示例:
[code]Some Link[/code]
[code]Link[/code]
[code]Another Link[/code]
我使用preg\u replace
删除第一个代码上方的文本,方法如下:
$message = preg_replace('/(.*?)\[code/si','[code',$message, 1);
你能帮我用
preg\u replace
删除另一个文本吗?假设你永远不会有[code]abc[code]def[/code]ghi[/code]
,试试这个:
do {
$message = preg_replace("((?:\[code\].*?\[/code\])*).*?(?=\[code\]))is","$1",$message,-1,$c);
} while($c);
您可以这样做:
preg_match_all('/(\[code\].*\[\/code\])/Usmi', $text, $res);
$cnt = 0;
foreach ($res as $val) {
$cnt++;
$message .= $val[$cnt] . "<br />";
}
echo $message;
preg\u match\u all('/(\[code\].\[\/code\])/Usmi',$text,$res);
$cnt=0;
foreach($res作为$val){
$cnt++;
$message.=$val[$cnt]。“
”;
}
回声$信息;
只是为了让@Andreev的解决方案更简单一点:
$text = "
Some Text Here
[code]Some link[/code]
Text
[code]Link[/code]
Other Text
[code]Another Link[/code]
Other Text1
";
$keywords = preg_match_all('/(\[code\].*\[\/code\])/Usmi', $text, $res);
print(implode($res[0]));
您可以在此处进行测试:您是否尝试过使用
preg\u split
?preg\u split有什么用途?但我需要将文本内容放回变量$message中