Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php preg_替换以移除一些不需要的div_Php_Regex_Preg Replace - Fatal编程技术网

Php preg_替换以移除一些不需要的div

Php preg_替换以移除一些不需要的div,php,regex,preg-replace,Php,Regex,Preg Replace,在下面的代码中,我需要删除 它们将始终位于我的字符串的开始和结束处,例如: <div class="grid_8"><img src="http://rps.sanscode.com/site/assets/media/images/rps_mini_logo.png" border="0" alt="Rapid Print Solutions" style="margin-bottom: 30px;" /> <h1></h1> </di

在下面的代码中,我需要删除
它们将始终位于我的字符串的开始和结束处,例如:

<div class="grid_8"><img src="http://rps.sanscode.com/site/assets/media/images/rps_mini_logo.png" border="0" alt="Rapid Print Solutions" style="margin-bottom: 30px;" /> 
<h1></h1> 
</div>

什么是适合preg_替换的正则表达式来移除它?8可以是1到16之间的任意数字

谢谢

杰森


@阿姆贾德

这是我的密码

public function fix_grid(){
     $result = db::query("select * from sc_content_components where component_value_1 like '%grid_%'")->fetchAll(PDO::FETCH_ASSOC);

     foreach($result as $item){
  $json = json_decode($item['component_value_1']);
  if(is_null($json)) continue;
  $x = reset($json);

  echo htmlspecialchars($x);
  echo "<p>=======================<b>Changes to: </b></p>";

  $patterns = array('/^<(div)((?:\s+\w+(?:\s*=\s*(?:(?:"[^"]*")|(?:\'[^\']*\')|[^>\s]+))?)*)\s*(\/?)>/'
                  , '/<\/(\div+)[^>]*>$/');
  $x = preg_replace($patterns, array('',''), trim($x));
  echo htmlspecialchars($x);
  echo "<hr>";


  $json[0]=$x;
//  $ne['component_value_1'] = json_encode($json);
//  db::where('component_id', $item['component_id']);
//  db::update('sc_content_component', $ne);
     }

 }
公共功能修复网格(){
$result=db::query(“从sc_内容_组件中选择*,其中组件_值_1,如“%grid_%”)->fetchAll(PDO::FETCH_ASSOC);
foreach($result作为$item){
$json=json_decode($item['component_value_1']);
如果(is_null($json))继续;
$x=重置($json);
echo htmlspecialchars($x);
echo“==================================更改为:

”; $patterns=数组('/^用于打开

$patterns = array('/^<(div)((?:\s+\w+(?:\s*=\s*(?:(?:"[^"]*")|(?:\'[^\']*\')|[^>\s]+))?)*)\s*(\/?)>/'
                  , '/<\/div[^>]*>$/');
preg_replace($patterns, array('','');, trim($htmlString));

$patterns=array('/^对于所述问题,以下是解决方案:

编辑:扩展正则表达式=

/^\s*<div\s (?:".*?"|\'.*?\'|[^>]*?)*
            (?<=\s)class\s*=\s*(["\'])\s*grid_(?:1[0-6]|[1-9])\s*\1
            (?:".*?"|\'.*?\'|[^>]*?)*
     >
     (.*)
     <\/div\s*>
\s*$/xs
/^\s*]*?)*
(?稍微简单一些

如果1到16是有效的,并且是更大范围的一部分

$match=preg_replace(“/^]*)网格(1[0-6]|[1-9])([^>\d]*)>(.+)]*)>$/s“,“$4”,修剪($str),-1,$hmany);
如果($hmany){
回显“$match
”; }否则{echo“未找到匹配项!
”;}
如果1到16是唯一可能的范围,因此不相关

$match=preg_replace(“/^]*)>(.+)]*)>$/s“,“$2”,trim($str),-1,$hmany);
如果($hmany){
回显“$match
”; }否则{echo“未找到匹配项!
”;}

关于。

内容是否需要删除,或者仅仅是包装div,字符串中还有什么其他内容?很抱歉,内容需要保留,包装div需要删除。我记得使用perl处理嵌套模式。据我所知,您无法在PHP中执行此操作。它没有删除最后一个
…我需要做什么。请参阅此处:Ar您确定要使用trim吗?无论如何,请尝试从第二个图案的结尾处删除$。我将其更改为:
/$/
,它可以工作。您可以看到这有什么问题吗?应该很好,[^>]*可以处理两个图案之间的任何内容,例如空格,如果您有其中一个,它会断开
$match = preg_replace("/^<([^>]*)grid_(1[0-6]|[1-9])([^>\d]*)>(.+)<([^>]*)>$/s","$4",trim($str),-1,$hmany);
if($hmany){
    echo "$match <br>";
}else{ echo "No match found! <br>"; }
$match = preg_replace("/^<([^>]*)>(.+)<([^>]*)>$/s","$2",trim($str),-1,$hmany);
if($hmany){
    echo "$match <br>";
}else{ echo "No match found! <br>"; }