标记

时间:2016-09-17 06:35:38

标签: php regex

我无法使用正则表达式来匹配括号中 的文字。

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

考虑以下字符串:

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

我想要第一个&lt;&gt;之后的文字tag(用户名)。但是其他括号应该保留。

2 个答案:

答案 0 :(得分:1)

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

<强>解释

  • ^ 行首
  • [^&lt;] * 零个或多个字符不是&lt;字符
  • &lt; 字符
  • [^>;] * 零个或多个不是&gt;的字符字符
  • &gt; 字符
  • (。*)预期捕获组
  • $ 行尾

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

答案 1 :(得分:0)

你可能在这里遇到两个问题 - 首先是处理,然后是第二次回复&lt;和&gt;如果你想将这些用作标签,那么它将被视为html标签,然后是第二组代码

所以

<?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;
?>