BBcode aus Select Feld in Textfeld einfügen!
#1
Ich habe den ersten Eintrag gelöscht weil es sich erledigt hat. MFG der Litter
Zitieren
#2
Ok ein neues Problem. Ich erstelle wie gesagt einen BBcode Editor und für Zentrierten Text weis ich wie ich es machen muss nur für links und rechts ausgerichteten taxt nicht.

Hier der Code

PHP-Code:
//Javascriptteil
<script type="text/javascript">
<!--
function 
insert(aTageTag) {
  var 
input document.forms['formular'].elements['text'];
  
input.focus();
  
/* für Internet Explorer */
  
if(typeof document.selection != 'undefined') {
    
/* Einfügen des Formatierungscodes */
    
var range document.selection.createRange();
    var 
insText range.text;
    
range.text aTag insText eTag;
    
/* Anpassen der Cursorposition */
    
range document.selection.createRange();
    if (
insText.length == 0) {
      
range.move('character', -eTag.length);
    } else {
      
range.moveStart('character'aTag.length insText.length eTag.length);      
    }
    
range.select();
  }
  
/* für neuere auf Gecko basierende Browser */
  
else if(typeof input.selectionStart != 'undefined')
  {
    
/* Einfügen des Formatierungscodes */
    
var start input.selectionStart;
    var 
end input.selectionEnd;
    var 
insText input.value.substring(startend);
    
input.value input.value.substr(0start) + aTag insText eTag input.value.substr(end);
    
/* Anpassen der Cursorposition */
    
var pos;
    if (
insText.length == 0) {
      
pos start aTag.length;
    } else {
      
pos start aTag.length insText.length eTag.length;
    }
    
input.selectionStart pos;
    
input.selectionEnd pos;
  }
  
/* für die übrigen Browser */
  
else
  {
    
/* Abfrage der Einfügeposition */
    
var pos;
    var 
re = new RegExp('^[0-9]{0,3}$');
    while(!
re.test(pos)) {
      
pos prompt("Einfügen an Position (0.." input.value.length "):""0");
    }
    if(
pos input.value.length) {
      
pos input.value.length;
    }
    
/* Einfügen des Formatierungscodes */
    
var insText prompt("Bitte geben Sie den zu formatierenden Text ein:");
    
input.value input.value.substr(0pos) + aTag insText eTag input.value.substr(pos);
  }
}
//-->
</script>
  <
table cellspacing="0" cellpadding="0" width="400" border="0">
  <
tr>
  <
td colspan="2">
      <
a href="#" onClick="insert('[b]', '[/b]')"><img src="grafiken/bold.gif" alt="" width="21" height="20" border="0"></a>
    <
a href="#" onClick="insert('[i]', '[/i]')"><img src="grafiken/italic.gif" alt="" width="21" height="20" border="0"></a>
    <
a href="#" onClick="insert('[u]', '[/u]')"><img src="grafiken/underline.gif" alt="" width="21" height="20" border="0"></a>
    <
a href="#" onClick="insert('[align=center]', '[/align]')"><img src="grafiken/justifycenter.gif" alt="" width="21" height="20" border="0"></a>
    <
a href="#" onClick="insert('[align=left]', '[/align]')"><img src="grafiken/justifyleft.gif" alt="" width="21" height="20" border="0"></a>
    <
a href="#" onClick="insert('[align=right]', '[/align]')"><img src="grafiken/justifyright.gif" alt="" width="21" height="20" border="0"></a>
    <
a href="#" onClick="insert('[li]', '[/li]')"><img src="grafiken/insertorderedlist.gif" alt="" width="21" height="20" border="0"></a>
    <
a href="#" onClick="insert('[ol]', '[/ol]')"><img src="grafiken/insertunorderedlist.gif" alt="" width="21" height="20" border="0"></a>
  </
td>
  </
tr>
  <
tr>
  <
td width="330" class="td_forms">
  <
select name="color" style="background-color: #666666; font-size: 12px;">
      <
option >Schriftfarbe</option>
      <
option style="color: #ff0000;" onClick="insert('[color=red]', '[/color]')">Rot</option>
    <
option style="color: #000000;" onClick="insert('[color=black]', '[/color]')">Schwarz</option>
    <
option style="color: #ffffff;" onClick="insert('[color=white]', '[/color]')">Weis</option>
    <
option style="color: #0000FF;" onClick="insert('[color=blue]', '[/color]')">Blau</option>
    <
option style="color: #00FF00;" onClick="insert('[color=green]', '[/color]')">Grün</option>
    <
option style="color: #333333;" onClick="insert('[color=gray]', '[/color]')">Grau</option>
    <
option style="color: #FFFF00;" onClick="insert('[color=yellow]', '[/color]')">Gelb</option>
    <
option style="color: #FF6600;" onClick="insert('[color=orange]', '[/color]')">Orange</option>
  </
select>
  &
nbsp;&nbsp;
  <
select name="size" style="background-color: #666666; color: #000000; font-size: 12px;">
      <
option >Schriftgröße</option>
      <
option onClick="insert('[size=8px]', '[/size]')">8px</option>
    <
option onClick="insert('[size=10px]', '[/size]')">10px</option>
    <
option onClick="insert('[size=12px]', '[/size]')">12px</option>
    <
option onClick="insert('[size=14px]', '[/size]')">14px</option>
    <
option onClick="insert('[size=16px]', '[/size]')">16px</option>
    <
option onClick="insert('[size=18px]', '[/size]')">18px</option>
    <
option onClick="insert('[size=20px]', '[/size]')">20px</option>
    <
option onClick="insert('[size=22px]', '[/size]')">22px</option>
    <
option onClick="insert('[size=24px]', '[/size]')">24px</option>
  </
select>
  &
nbsp;&nbsp;
  <
select name="art" style="background-color: #666666; color: #000000; font-size: 12px;">
      <
option >Schriftart</option>
      <
option onClick="insert('[font=arial]', '[/font]')">Arial</option>
    <
option onClick="insert('[font=Times New Roman]', '[/font]')">Times New Roman</option>
  </
select>
  </
td>
  </
tr>
  <
tr>
  <
td colspan="2">
  <
textarea name="text" cols="45" rows="10"></textarea>
  </
td>
  </
tr>
  </
table>

//PHP Parserteil
<?php

$edSearch
=array("#\[b\](.*)\[/b\]#",
                
"#\[i\](.*)\[/i\]#",
                
"#\[u\](.*)\[/u\]#",
                
"#\[li\](.*)\[/li\]#",
                
"#\[ol\](.*)\[/ol\]#",
                
"#\[center\](.*)\[/center\]#",
                
"#\[left\](.*)\[/left\]#",
                
"#\[right\](.*)\[/right\]#",
                
"#\[color=(.*?)\](.*)\[/color\]#",
                
"#\[size=(.*?)\](.*)\[/size\]#"
                "#\[font=(.*?)\](.*)\[/font\]#"
        
);
$edReplace=array("<b>$1</b>",
                 
"<i>$1</i>",
                 
"<u>$1</u>",
                 
"<li>$1</li>",
                 
"<ol>$1</ol>",
                 
"<center>$1</center>",
                 
"<left>$1</left>",
                 
"<right>$1</right>",
                 
"<span style=\"color:$1\";>$2</span>",
                 
"<span style=\"font-size:$1\";>$2</span>"
                 "<span style=\"font-famaly:$1\";>$2</span>"
        
);
echo 
preg_replace($edSearch,$edReplace,$text);

?>

Also das parsen für alle anderen Sachen passt und klappt wunderbar nur wie muss ich das für links und rechts ausgerichteten text?

Danke
Zitieren
#3
...
so wirds was...
Code:
$text = preg_replace("/(\[ALIGN=)(CENTER|LEFT|RIGHT|JUSTIFY)(\])(.+?)(\[\/ALIGN\])/is", '<p style="text-align:\2;">\4</p>', $text);

Cu Helmut
Zitieren
#4
Hallo helmut ich habe das jetzt versucht auf meinen vorhergegangenen Code anzupassen aber es funktioniert nicht.
Ich würde es eben gern bei der selben Struktur belassen.

MFG der Litter
Zitieren
#5
Hi,

alles in das search und replace Array packen würde ich eh nicht, Du kommst bestimmt mal dahin noch aufwendigere Sachen zu parsen. Da kommst Du um ein paar mehr Regexe eh nicht herum. Die einfachen Sachen wie Fett, Kursiv usw. kannst Du schon so machen. Aber es gibt auch Sachen da komst Du mit einer callback Funktion (preg_replace_callback) besser.

Meine Codeparser Routine hat mittlerweile was über 400 Zeilen Code. Gut, die deckt aber auch so einige Spezialfälle ab ;-)

Cu Helmut
Zitieren
#6
Tach Helmut!

Eine Frage mal noch könntest du mir mal ein Beispiel Code für die anderen Sachen posten anhand deines Codes!

PHP-Code:
$text preg_replace("/(\[ALIGN=)(CENTER|LEFT|RIGHT|JUSTIFY)(\])(.+?)(\[\/ALIGN\])/is"'<p style="text-align:\2;">\4</p>'$text); 

Weil da würde ich das nämlich umscripten und einheitlich machen. Habe auch schon übelegt dann das gesamte parsing in eine extra ausgelagerte Funktion zu schreiben!
Achso das Forum find ich klasse auch von der Hilfsbereitschaft her. Aber eine kleine Anmerkung ich vermisse ein Bord für PHP und MYSQL. Vieleicht wäre es erwegenswert das nochhinzu zu fügen!

Gruß der Litter
Zitieren
#7
Hi,

Zitat:Aber eine kleine Anmerkung ich vermisse ein Bord für PHP und MYSQL. Vieleicht wäre es erwegenswert das nochhinzu zu fügen!
Das Forum hier ist in erster Linie für Grafik und Design (von Webseiten) gedacht, Jürgen hat solche Spezialgebiete hier aus gutem Grund rausgelassen.

Du könntest dich dafür bei mir im Forum registrieren, da werden solche Fragen in größerem Umfang behandelt.

Zitat:Eine Frage mal noch könntest du mir mal ein Beispiel Code für die anderen Sachen posten anhand deines Codes!
Du kannst aus dem Beispiel vieles andere ableiten, z.B. Schriftgrößen und anderes. Meine ganze Routine werd ich hier nicht reinstellen... ;-) Falls Du Anregungen für Regexe brauchst, die Adresse http://regexlib.com/default.aspx sollte genug Inspiration sein.

Cu Helmut
Zitieren



Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Kommentar einfügen bei deaktivierten Java script udog 1 1.744 30.07.2004, 22:13
Letzter Beitrag: Hulot