如何从 php 中的字符串中解析出特定的 "tags"
How can I parse out specific "tags" from a string in php
我喜欢 Whosebug 允许您通过在搜索字段中指定 [tagname]
来搜索标签的方式。我该如何着手编写一个解析器来帮助我从普通文本中分离出标签。我可以想到手动方法是使用子字符串 and/or 正则表达式的某种组合来获取打开和关闭方括号的位置,然后提取出这些字符串,但我很好奇是否有更好的方法(而且我的正则表达式技能充其量不过)
// example
$query = 'How to use [jQuery] [selector] selectors';
$tags = getTags($query); // $tags == 'jQuery, selector'
$text = getText($query); // $text == 'How to use selectors'
正则表达式可能效果最好,只是不要尝试解析 HTML。
https://www.debuggex.com/
是一个非常好的网站,可以直观地查看您的正则表达式字符串在做什么。我建议阅读 PHP 正则表达式函数,并了解更多信息,网站底部有一个作弊文件。
.*[(tag)].*
可以使用捕获的组来获取标签。 preg_match_all 函数非常适合处理多个结果,只需确保阅读官方文档以使其按您需要的方式工作。
对于解析更复杂或不规则的东西(如 html,这很难可靠地完成),最好手动完成。 Regex 过去曾满足我所有的非 HTML 解析需求。
正则表达式可能是可行的方法。您可以指定的标签设置方式越多,就越容易捕获正确的标签(在下面的表达式中,我将其限制为字母 \w
或数字 \d
。该函数使用捕获组(括在括号中)拉出相关标签。
function getTags($query) {
preg_match_all("/\[([\w\d]+)\]/", $query, $matches);
return $matches;
}
我喜欢 Whosebug 允许您通过在搜索字段中指定 [tagname]
来搜索标签的方式。我该如何着手编写一个解析器来帮助我从普通文本中分离出标签。我可以想到手动方法是使用子字符串 and/or 正则表达式的某种组合来获取打开和关闭方括号的位置,然后提取出这些字符串,但我很好奇是否有更好的方法(而且我的正则表达式技能充其量不过)
// example
$query = 'How to use [jQuery] [selector] selectors';
$tags = getTags($query); // $tags == 'jQuery, selector'
$text = getText($query); // $text == 'How to use selectors'
正则表达式可能效果最好,只是不要尝试解析 HTML。 https://www.debuggex.com/ 是一个非常好的网站,可以直观地查看您的正则表达式字符串在做什么。我建议阅读 PHP 正则表达式函数,并了解更多信息,网站底部有一个作弊文件。
.*[(tag)].*
可以使用捕获的组来获取标签。 preg_match_all 函数非常适合处理多个结果,只需确保阅读官方文档以使其按您需要的方式工作。
对于解析更复杂或不规则的东西(如 html,这很难可靠地完成),最好手动完成。 Regex 过去曾满足我所有的非 HTML 解析需求。
正则表达式可能是可行的方法。您可以指定的标签设置方式越多,就越容易捕获正确的标签(在下面的表达式中,我将其限制为字母 \w
或数字 \d
。该函数使用捕获组(括在括号中)拉出相关标签。
function getTags($query) {
preg_match_all("/\[([\w\d]+)\]/", $query, $matches);
return $matches;
}