Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.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 正则表达式,用于剥离特定HTML标记内的字符串_Php_Regex_Preg Replace - Fatal编程技术网

Php 正则表达式,用于剥离特定HTML标记内的字符串

Php 正则表达式,用于剥离特定HTML标记内的字符串,php,regex,preg-replace,Php,Regex,Preg Replace,我试图去掉一个字符串,它在使用cURL获得的页面上只出现一次。例如: <h3 class=" ">STRING IN QUESTION</h3> 有问题的字符串 或 有问题的字符串 或 有问题的字符串 我希望使用preg_match来实现这一点,除非可以使用资源密集度较低的方法来实现 下面是我使用的正则表达式,它产生零结果: <h3\sclass="\s">(.*?)</h3> (*) 编辑: 以下是实际代码(此处使用的实际URL代替了

我试图去掉一个字符串,它在使用cURL获得的页面上只出现一次。例如:

<h3 class=" ">STRING IN QUESTION</h3>
有问题的字符串

有问题的字符串

有问题的字符串
我希望使用preg_match来实现这一点,除非可以使用资源密集度较低的方法来实现

下面是我使用的正则表达式,它产生零结果:

<h3\sclass="\s">(.*?)</h3>
(*)
编辑:

以下是实际代码(此处使用的实际URL代替了动态URL)——发现通过cURL拉取时,class属性不存在,但仍然无法工作,如图所示:

$ch = curl_init ("URL IN QUESTION"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$page = curl_exec($ch);

preg_match('<h3>(.*?)</h3>', $page, $match);

print_r($match);
$ch=curl_init(“有问题的URL”);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
$page=curl\u exec($ch);
预匹配(“(.*?”,$page,$match);
打印(匹配);
不打印任何内容

可能:

<h3\s+class="\s*(active)?">(.*?)</h3>
也许:

尝试:

preg_match('#<h3\s?class="\s?(active)?">(.+)</h3>#', $yourString, $match);
preg#u match('#(.+)#',$yourString,$match);
请记住,在正则表达式中,您必须始终提供。

请尝试:

preg_match('#<h3\s?class="\s?(active)?">(.+)</h3>#', $yourString, $match);
preg#u match('#(.+)#',$yourString,$match);
请记住,在正则表达式中,必须始终提供一个值。

这样做的诀窍是:

$str='<h3 class=" ">STRING IN QUESTION</h3>';
preg_match('/<h3.*?>(.*?)<\/h3>/',$str,$match);
print_r($match);
这就是诀窍:

$str='<h3 class=" ">STRING IN QUESTION</h3>';
preg_match('/<h3.*?>(.*?)<\/h3>/',$str,$match);
print_r($match);


我假设问题中的
字符串
不是静态值?这是正确的。想要在share widget中使用此设置来自移动站点(无法控制相关站点)的facebook共享的标题,其标题是静态的,不能准确描述内容。发布了实际代码。也许会有帮助。你必须提供一个答案,但是,看看我的答案。更好。现在生成了一些东西,但它是一个空数组。我假设所讨论的
字符串
不是静态值?这是正确的。想要在share widget中使用此设置来自移动站点(无法控制相关站点)的facebook共享的标题,其标题是静态的,不能准确描述内容。发布了实际代码。也许会有帮助。你必须提供一个答案,但是,看看我的答案。更好。现在生成了一些东西,但是是一个空数组。这是一个改进,但仍然没有结果。在这里,它工作得很好,您正在使用的正则表达式库/应用程序是什么?将发布完整的代码。这可能是正则表达式之外的错误。这是一个改进,但仍然没有结果。在这里,它工作得很好,您正在使用的正则表达式库/应用程序是什么?将发布完整的代码。它可能是在正则表达式之外出错了。尝试了这个,然后,#(.*)#-,现在得到了一个数组,但是是空的。它应该可以工作,我测试过了,它可以工作!您的字符串位于
$match[2]
中。它可用于伪代码,但不能用于已删除的代码(请参阅已编辑的问题,完整代码已发布)。为我生成一个空数组。显然,
$yourString
必须替换为
$page
。并检查
$page
是否为
FALSE
,因为根据php手册
curl\u exec
失败时返回FALSE。变量名称已更改。现在得到一个结果,但是一个空的。尝试了这个,并且,#(.*)#-,现在得到一个数组,但是是空的。它应该可以工作,我测试过了,它可以工作!您的字符串位于
$match[2]
中。它可用于伪代码,但不能用于已删除的代码(请参阅已编辑的问题,完整代码已发布)。为我生成一个空数组。显然,
$yourString
必须替换为
$page
。并检查
$page
是否为
FALSE
,因为根据php手册
curl\u exec
失败时返回FALSE。变量名称已更改。现在得到一个结果,但结果是空的。感谢您的回答和解释,它可以使用伪代码,但不能使用cURL。仍在生成空数组。我复制了您的代码并打印了一个
打印$page
,它不包含任何
标记?感谢您指出URL不正确。如果URL正确,以下任何一个答案都有效。你对我这种白痴的解释让我很高兴。谢谢。这里有一个有趣的问题。。。给定正确的代码,有没有办法不使用正则表达式就去掉H3标记之间的内容?在这种情况下,页面上只有一个H3标记实例。应该对
noobs
regexperts
之类的内容进行解释,无论如何,请参见我的多行匹配更新。您确实不想使用
regex
解析XML/HTML。看看如何使用XML解析器。感谢您的回答和解释,可以使用伪代码,但不能使用cURL。仍在生成空数组。我复制了您的代码并打印了一个
打印$page
,它不包含任何
标记?感谢您指出URL不正确。如果URL正确,以下任何一个答案都有效。你对我这种白痴的解释让我很高兴。谢谢。这里有一个有趣的问题。。。给定正确的代码,有没有办法不使用正则表达式就去掉H3标记之间的内容?在这种情况下,页面上只有一个H3标记实例。应该对
noobs
regexperts
之类的内容进行解释,无论如何,请参见我的多行匹配更新。您确实不想使用
regex
解析XML/HTML。看看如何使用XML解析器。
$str='<h3 class=" ">STRING IN QUESTION</h3>';
preg_match('/<h3.*?>(.*?)<\/h3>/',$str,$match);
print_r($match);
Array
(
    [0] => <h3 class=" ">STRING IN QUESTION</h3>
    [1] => STRING IN QUESTION
)
<h3.*?> # Match h3 tags (non-greedy)
(.*?)   # Match everything after tag (non-greedy, captured)     
<\/h3>  # Match closing tag - Note the escaped forward slash!
Array
(
    [0] => <h1 class="">
<span class="pageTitle ">Braman Motorcars</span>
</h1>
    [1] => 
<span class="pageTitle ">Braman Motorcars</span>

)