2017-08-17 5 views
0

Ich muss die Sätze oder Absätze zu jedem Wort extrahieren und das Wort in ein anderes Formular manipulieren. Zum Beispiel, ich brauche das Wort Nudel zu ## Nudel ## zu ändern. Ich verwende diesen Code, um den Satz in Wörter zu explodieren und wieder mit implode() Funktion zu kombinieren.Wiederherstellen des String-Formats nach der Manipulation

function display_sentence_with_answer($str="") 
{ 
    $arr_output = []; 
    $str = preg_replace("#<p>(\s| |</?\s?br\s?/)*</?p>#","",$str); 
    $words = preg_replace('#<[^>]+>#', ' ', $str); 
    $arr_words = preg_split('/<[^>]+>(?:\s+<[^>]+>)*|\s+/u', trim($words)); 

    foreach($arr_words as $word) 
    { 
     $arr_output[] = '##'.$word.'##'; 
    } 
    $output_str = implode(" ",$arr_output); 
    return $output_str; 
} 

Eingang:

Nyatakan pecahan bagi rajah di bawah. 

<br/> 
4/5 


<p> 
p</p> 

Allerdings habe ich die Ausgabe:

##Nyatakan## ##pecahan## ##bagi## ##rajah## ##di## ##bawah.## ##4/5## ##p## 

Wie meine aktuellen Eingabeformat wiederherzustellen zurück? Wer erlebt diese Art von Anforderungen?

würde Mein erwartet ausgegeben:

##Nyatakan## ##pecahan## ##bagi## ##rajah## ##di## ##bawah.## 

<br/> 
##4/5## 


<p> 
p</p> 

Dank!

+1

Sie könnten ein Array mit zwei Elementen zurückgeben: Original-String und verarbeiteter String. – user1915746

+0

@ user1915746 Würde nicht wirklich helfen, da er immer noch identifizieren muss, welche Zeichenfolgen < or /> in ihnen haben. er kann auch die Überprüfung dafür in seinem ursprünglichen Array machen – IsThisJavascript

Antwort

1

können Sie diese Regex verwenden, um mit PCRE Verben (*SKIP)(*F) bestimmte Spiele überspringen:

(?:<([^>]*)>.*?</\1>|<[^>]*/>)(*SKIP)(*F)|\b\w\S* 

RegEx Demo

RegEx Breakup:

(?:     # start non capturing group 
    <([^>]*)>.*?</\1> # match a tag and closing tag <tag>...</tag> 
    |     # OR 
    <[^>]*/>   # match a tag like <tag/> 
)      # end non capturing group 
(*SKIP)(*F)   # skip this match 
|      # OR 
\b\w\S*    # match a word starting with a word character 

Achtung: HTML ist kein normale Sprache, kann es sehr unberechenbar sein d es ist nicht ratsam, HTML mit Regex zu analysieren.

+0

Wie in PHP zu verwenden? Ich versuchte, aber nicht Erfolg. Kannst du mir zeigen? ;) – Nere

+0

Kannst du mir empfehlen, was ist die beste Webseite um REGEX zu üben? – Nere

+0

Dies sollte in PHP funktionieren. In dem Demo-Link, den ich zur Verfügung gestellt habe, können Sie PHP-Code für die gleiche Regex sehen. – anubhava

Verwandte Themen