2016-09-17 41 views
-1

我一直无法为括号内的之外的文本匹配正则表达式。在标记后匹配文本的正则表达式

我看到的所有例子都在里面。

考虑以下字符串:

<@231312312312> foobar foobar 
<@231312312312> foobar <asad> foobar 
<@231312312312> foobar foobar <asdasd> 

我希望第一个<>标签(用户名)后到来的文本。但其他括号应该保留。

+1

这将被视为html标签请解释什么是*第一个标记*和它后面的*文字*。 – revo

回答

1
preg_match("/^[^<]*<[^>]*>(.*)$/", $input_line, $output_array); 

说明:

  • ^线的开始
  • [^ <] *零个或多个字符,这是不<字符
  • <字符
  • [^>] *零个或多个字符,这是不>字符
  • >字符
  • (。*)旨在捕获组
  • $线的端

请注意,这是对你想要什么做出某些假设,因为它并不完全清楚。它会捕获所有内容,(包括任何其他标签),跟在最初的标签组之后。

0

你可能有2个问题在这里 - 先处理,其次呼应<和>如果你想这些作为标签,然后第二组码

所以

<?php 
$string1 = "<@231312312312> foobar <asad> foobar";  
$string2 = substr($string1, strpos($string1, ">") + 1); 
echo htmlspecialchars($string2); 
?> 

<?php 
$string1 = "<@231312312312> foobar <asad> foobar";  
$string2 = substr($string1, strpos($string1, ">") + 1); 
echo $string2; 
?>