You are not logged in.

  • Login

1

Thursday, September 13th 2007, 3:10pm

Copy & Past aus Word to Textfeld

Hallo Leute,

ich habe ein Textfeld welches mit

PHP Quellcode

1
preg_match(#^[\wäÄöÖüÜß\-\:\.\"\€\@\+\§\$\%\&\/\_\`\´\,\;\?\#\*\=\(\)\[\]\!\s]+$#i,string)


überprüft wird. Nun möchte der Anwender gerne aus Word Texte rauskopieren und in das Textfeld einfügen. Dies führt dann zu Problemen weil Word komisch Trennzeichen und sonstigen Müll mit übergibt. Wie kann man den Text davon säubern? Wenn das nicht geht wie muss der Reguläre Ausdruck aussehen das alle erlaubt ist, was mir aber nicht so gut gefallen würde.

Habe schon versucht das in UTF-8 Format zu bringen, leider hat das nichts gebracht.

PHP Quellcode

1
mb_convert_encoding($string,"UTF-8", "iso-8859-1")


Gruß
Stephan

2

Thursday, September 13th 2007, 3:27pm

Poste mal ein Beispiel. Ich glaube das Problem sind die vielen, komischen Tags, die Word mitbringt.
Vielleicht hilft es dir den TinyMCE mal etwas zu zerlegen. Habe dessen Word Plugin mal angehängt.
Torben Brodt has attached the following file:
  • word-plugin.txt (13.93 kB - 57 times downloaded - latest: May 5th 2012, 3:07am)

3

Thursday, September 13th 2007, 3:42pm

Habe jetzt mal die Zeichen hinzugefügt. Nun geht es, aber die Zeichen sind ja im Text und sehen scheiße aus. Aber damit müssten die User zurecht kommen :-)

Nun weiß ich leider nicht welche Zeichen Word noch so ausspuckt in Zukunft. Deswegen wäre mir es lieb ein Regulären Ausdruck zunehmen der einfach alles erlaubt, oder ich muss für das Textfeld die preg_match funktion rausnehmen.

#^[\wäÄöÖüÜß\-\:\.\"\€\@\¬\–\“ \„\+\§\$\%\&\/\_\`\´\,\;\?\#\*\=\(\)\[\]\!\s]+$#i

Wie benutzt man Word-Plugin ?
Matrixstyle has attached the following image:
  • forum_test.jpg

4

Thursday, September 13th 2007, 4:26pm

Das sind ja komische Zeichen....
Habe jetzt einfach mal ein paar Funktionen aus der TinyMCE Datei genommen.... ist halt JavaScript.

JavaScript Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
/**
 * cleanup word content
 * @param content
 */
function word(content) { 
	var bull = String.fromCharCode(8226);
	var middot = String.fromCharCode(183);
	var cb;
 
	content = content.replace(new RegExp('<p class=MsoHeading.*?>(.*?)<\/p>', 'gi'), '<p><b>$1</b></p>');
	content = content.replace(new RegExp('tab-stops: list [0-9]+.0pt">', 'gi'), '">' + "--list--");
	content = content.replace(new RegExp(bull + "(.*?)<BR>", "gi"), "<p>" + middot + "$1</p>");
	content = content.replace(new RegExp('<SPAN style="mso-list: Ignore">', 'gi'), "<span>" + bull); // Covert to bull list
	content = content.replace(/<o:p><\/o:p>/gi, "");
	content = content.replace(new RegExp('<br style="page-break-before: always;.*>', 'gi'), '-- page break --'); // Replace pagebreaks
	content = content.replace(new RegExp('<(!--)([^>]*)(--)>', 'g'), "");  // Word comments
	content = content.replace(/<\/?span[^>]*>/gi, "");
	content = content.replace(new RegExp('<(\\w[^>]*) style="([^"]*)"([^>]*)', 'gi'), "<$1$3");
	content = content.replace(/<\/?font[^>]*>/gi, "");
	content = content.replace(/<(\w[^>]*) class=([^ |>]*)([^>]*)/gi, "<$1$3");
	content = content.replace(/<(\w[^>]*) lang=([^ |>]*)([^>]*)/gi, "<$1$3");
	content = content.replace(/<\\?\?xml[^>]*>/gi, "");
	content = content.replace(/<\/?\w+:[^>]*>/gi, "");
	content = content.replace(/-- page break --\s*<p>&nbsp;<\/p>/gi, ""); // Remove pagebreaks
	content = content.replace(/-- page break --/gi, ""); // Remove pagebreaks
	content = content.replace(/<h[1-6]>&nbsp;<\/h[1-6]>/gi, '<p>&nbsp;&nbsp;</p>');
	content = content.replace(/<h[1-6]>/gi, '<p><b>');
	content = content.replace(/<\/h[1-6]>/gi, '</b></p>');
	content = content.replace(/<b>&nbsp;<\/b>/gi, '<b>&nbsp;&nbsp;</b>');
	content = content.replace(/^(&nbsp;)*/gi, '');
	content = content.replace(/--list--/gi, ""); // Remove --list--
 
	return content;
}

Similar threads

Social bookmarks