2016-09-17 69 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; 
?>