gpt4 book ai didi

php - 从 PHP 数组中仅输出括号中不包含 HTML 标记的值

转载 作者:可可西里 更新时间:2023-11-01 00:56:15 26 4
gpt4 key购买 nike

这是一个示例 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是一个空间\(左括号^((?!是标记拒绝声明的开始<(.*?)(\h*).*?>(.*?)<\/\1>标签本身,).)*$是标签拒绝声明的结尾\)右括号

没有任何作用。

print_r($array_no_tags);返回空数组。

最佳答案

您可以使用以下表达式来匹配括号内带有 HTML 标记的字符串:

/\([^)]*<(\w+)>[^<>]*<\/\\1>[^)]*\)/

然后设置 PREG_GREP_INVERT flagtrue为了只返回不匹配的项目。

$array_no_tags = preg_grep("/\([^)]*<(\w+)>[^<>]*<\/\\1>[^)]*\)/", $array, true);

解释:

  • \( - 匹配文字 (特点
    • [^)]* - 否定字符类以匹配零个或多个非 )人物
    • <(\w+)> - 捕获与开始元素的标签名称匹配的第一组
    • [^<>]* - 否定字符类以匹配零个或多个非 <>人物
    • <\/\1> - 向后引用捕获第一组以匹配结束标记
    • [^)]* - 否定字符类以匹配零个或多个非 )人物
  • \) - 匹配文字 )性格

如果您不关心元素标记周围的括号,那么您也可以使用以下简化表达式:

/<(\w+)>[^<>]+<\/\\1>/

同样,您将使用:

$array_no_tags = preg_grep("/<(\w+)>[^<>]+<\/\\1>/", $array, true);

关于php - 从 PHP 数组中仅输出括号中不包含 HTML 标记的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42217267/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com