【发布时间】:2017-07-02 05:14:30
【问题描述】:
这是一个很好地解释了我的问题的示例 PHP 数组
$array = array('1' => 'Cookie Monster (<i>eats cookies</i>)',
'2' => 'Tiger (eats meat)',
'3' => 'Muzzy (eats <u>clocks</u>)',
'4' => 'Cow (eats grass)');
我只需要从这个数组中返回不包含任何用括号括起来的标签的值:
- Tiger (eats meat)
- Cow (eats grass)
为此,我将使用以下代码:
$array_no_tags = preg_grep("/[A-Za-z]\s\(^((?!<(.*?)(\h*).*?>(.*?)<\/\1>).)*$\)/", $array);
foreach ($array_no_tags as $a_n_t) {echo "- ".$a_n_t."<br />";}
假设[A-Za-z]可能是谁,\s是一个空格,\(是左括号,@987654329 @是标签拒绝语句的开始,<(.*?)(\h*).*?>(.*?)<\/\1>是标签本身,).)*$是标签拒绝语句的结束,@ 987654332@ 是右括号。
没有任何作用。
print_r($array_no_tags); 返回空数组。
【问题讨论】:
-
我认为 strip_tags 会为你工作。 php.net/manual/en/function.strip-tags.php
-
如何使用前瞻:
/^(?!.*?\([^)<]*<\w)/ -
@bobble bubble,您的回复非常有效,您能否将其重新发布为答案以便我投票?
-
很高兴它也有帮助(:我也提出了答案(我认为乔希的答案已经很准确了)。
-
实际上 Josh 的不适合我今天遇到的另一个案例,同时你的例子完美匹配。反之亦然。虽然这两种情况对我来说看起来相似,但我仍然没有认识到隐藏的差异。所以你也为我节省了很多时间和精力,谢谢!