2017-03-13 12 views
0

の未知の修飾語 '/'これは必要なものすべてを持っていますが、現在正規表現に問題があります。正規表現の長さの制限はありますか?すべてのヘルプはpreg_match_all():

$possible_tags_in_regex = "/(<b>|<\/b>|<i>|<\/i>|<u>|<\/u>|<tt>|<\/tt>|<font size=[1-7]>|<font color=#[a-fA-F0-9]>|<\/font>)*/"; 
      // Add possible tags between every character in a string 
      $regex = implode($possible_tags_in_regex, str_split($regex)); 
      $regex = $possible_tags_in_regex.$regex.$possible_tags_in_regex; 

      // Format every regex every match with given tags 
      if (preg_match_all($regex, $input, $to_be_replaced)) { 
+4

まで何それと?あなたがすべてのものを取り除きたいのであれば、なぜそのようなトラブルを経験するのですか?なぜオプションで 'strip_tags()'を使わないのですか? –

+1

さらに、「」タグは非推奨/廃止https://developer.mozilla.org/en-US/docs/Web/HTML/Element/fontです。あなたはたぶんどこかのレガシーコードを使用して、すべてのものを置き換える必要があるでしょうか? –

+0

ストライピングタグは私の解決策には役に立たない。 Correct – DjEasyDick

答えて

0

いただければ幸いですあなたの完全なパターンは、区切り文字を必要とするが、あなたは最初にそれらを追加し、内破と連結するので、あなたは多くで終わるされています。 $possible_tags_in_regexから区切り文字を削除し、最後にそれらを追加:

$possible_tags_in_regex = "(<b>|<\/b>|<i>|<\/i>|<u>|<\/u>|<tt>|<\/tt>|<font size=[1-7]>|<font color=#[a-fA-F0-9]>|<\/font>)*"; 
// Add possible tags between every character in a string 
$regex = implode($possible_tags_in_regex, str_split($regex)); 
$regex = "/$possible_tags_in_regex.$regex.$possible_tags_in_regex/"; 

しかし、あなたは、このような~ようなパターンではありません何かを使用してエスケープのすべてを排除することができます

$possible_tags_in_regex = "(<b>|</b>|<i>|</i>|<u>|</u>|<tt>|</tt>|<font size=[1-7]>|<font color=#[a-fA-F0-9]>|</font>)*"; 
// Add possible tags between every character in a string 
$regex = implode($possible_tags_in_regex, str_split($regex)); 
$regex = "~$possible_tags_in_regex.$regex.$possible_tags_in_regex~"; 
+0

ありがとうございます:) – DjEasyDick