Get all words from text containing html tags with php regex
我目前正尝试使用PHP从包含HTML标记的文本中获取所有单词
我的regex有一个问题,如果一个单词以重音结束("_"例如),我的单词就不会被捕获。
我的正则表达式是
1 2 3 4 5 6 7 8 9 | $re = '/([^ \t\f>< /]+(?!>))\b/'; $str = 'Non ! Non ! Je ne veux pas d\'un éléphant dans un boa. <p> Un boa c\'est très dangereux, et un éléphant élévé c\'est très encombrant. Chez moi c\'est tout petit. J\'ai besoin d\'un mouton. Dessine-moi un mouton. </p> -Laisse-moi dire mouton... For saints have hands that pilgrims\' hands do touch |
;
1 2 3 4 |
但是,在我的例子中,单词"_l_v_"不匹配
请在此处找到一个示例:Regex Live示例
为什么这个正则表达式与重音不匹配?
如果要使用regex,可以使用:
1 | <[^>]+>(*SKIP)(*FAIL)|([A-zà-?]+) |
工作演示
请注意,regex character类中的字符范围使用ASCII范围,我用最简单的方法,但请记住,该范围包含您可能不需要的符号。如果要支持特定字符,请检查ASCII表并使用所需的范围
另外,如果要将
1 | <[^>]+>(*SKIP)(*FAIL)|([A-zà-?']+) |
编辑:如果您检查Bobble气泡注释,您将发现Unicode标志的一个非常有用的用法。引用他的评论,您可以使用一个非常简单的regex,方法是使用这样的EDOCX1(unicode)标志:
1 | <[^>]+>(*SKIP)(*FAIL)|([\w']+) |
工作演示
如果您希望由
1 | <[^>]+>(*SKIP)(*FAIL)|([\w'-]+) |
编辑2:由于您第二次编辑了您的问题,并且还评论说您不希望使用初始连字符,因此您可以使用此regex:
1 | <[^>]+>(*SKIP)(*FAIL)|([\w']+(?:[\w'-]*)) |
工作演示