php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005-2

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 19.10.2005, 13:38  
Erfahrener Benutzer
 
Registriert seit: 01.02.2004
Beiträge: 550
cytrobic
Standard wiedermal preg_match und preg_replace

Moin leute,

ich hab mal wieder ein Problem mit den o.g. Funktionen.

Folgendes problem:
Ich habe Dateien in denen zeilen vorhanden sind:
Code:
<font face="verdana" size="2">text</font>
ich möchte nun die size="2" durch style="font-size: 13px" ersetzen.
Es sollen aber auch alle anderen size="?" ersetzt werden, aber nur in den font tags.

Code:
  str_replace('size="1"', 'style="font-size: 10px"', $code);
  str_replace('size="2"', 'style="font-size: 13px"', $code);
  str_replace('size="3"', 'style="font-size: 16px"', $code);
  str_replace('size="4"', 'style="font-size: 18px"', $code);
funktioniert nicht. was kann ich tun ?

EDIT:

d.h. ich müsste erstmal prüfen ob in der aktuellen zeile ein "font" steht:

Code:
  if(preg_match("/font/i", $zeile)){
um dann nach der size zu gucken:
aber wie weiter ? ich brauch dann size, und den wert von size damit ich daraus dann die px für die font-size errechnen kann.
__________________
keine
cytrobic ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 19.10.2005, 14:57  
Erfahrener Benutzer
 
Registriert seit: 20.01.2005
Beiträge: 1.557
PHP-Kenntnisse:
Fortgeschritten
Buhmann ist zur Zeit noch ein unbeschriebenes Blatt
Buhmann eine Nachricht über ICQ schicken Buhmann eine Nachricht über MSN schicken
Standard

nimm preg_replace

Das pattern ist:
Code:
@<font (.*)size="([\d]+)"(.*)>@iUe
Ersatz:
Code:
"<font \\1style='font-size: ".funktion(\\2)."px'\\3>"
Dann brauchst du noch die funktion "funktion":
PHP-Code:
<?php
function funktion($zahl) {
  
//zahl umrechnen
  
return $neuezahl;
}
?>
alles ohne garantie
Buhmann ist offline  
Alt 19.10.2005, 15:04  
Erfahrener Benutzer
 
Registriert seit: 01.02.2004
Beiträge: 550
cytrobic
Standard

moin danke für den tipp, ich habs im moment ganz bescheuert so:

PHP-Code:
<?php

$file 
fopen("text.htm""r");
$a 0;

while(!
feof($file)){

 
$line fgets($file1024);
 if(
preg_match("/<font/i"$line)){
   
$neuz $line;
   
$lone explode(" "$line);
   
$size sizeof($lone);

   for(
$i=0;$i<=$size;$i++){
    if(
preg_match("/size/i"$lone[$i])){
      
$sizex $lone[$i];
      
$sizex str_replace("/"""$sizex);
      
$sizex str_replace("<"""$sizex);
      
$sizex str_replace(">"""$sizex);
      
$sizex str_replace("font"""$sizex);
      
$sizex str_replace("br"""$sizex);
      
$sizex str_replace("\r"""$sizex);
      
$sizex str_replace("\n"""$sizex);
      
$partx explode("\""$sizex);

      if(
$partx[1] == 1){ $repl 'style="font-size: 10px"'; }
      if(
$partx[1] == 2){ $repl 'style="font-size: 13px"'; }
      if(
$partx[1] == 3){ $repl 'style="font-size: 16px"'; }
      if(
$partx[1] == 4){ $repl 'style="font-size: 18px"'; }

      
$toer 'size="'.$partx[1].'"';
      
$neuz str_replace($toer$repl$neuz);

      
$text "size=";

      if(!
preg_match("/$text/i"$neuz)){ 
        echo 
$neuz;
      }
    }
   }
 } else {
   echo 
$line;
 }
}

fclose($file);

?>
funtzt zwar sieht aber nich sehr fein aus
ich probier deins mal.
__________________
keine
cytrobic ist offline  
Alt 19.10.2005, 23:05  
Gast
 
Beiträge: n/a
Standard

Zitat:
$sizex = str_replace("/", "", $sizex);
$sizex = str_replace("<", "", $sizex);
$sizex = str_replace(">", "", $sizex);
$sizex = str_replace("font", "", $sizex);
$sizex = str_replace("br", "", $sizex);
$sizex = str_replace("\r", "", $sizex);
$sizex = str_replace("\n", "", $sizex);
Probier mal:

$sizex = preg_replace('#(<|>|font|br|\r|\n)#i', '', $sizex);

Wäre einfacher und kürzer
 
Alt 20.10.2005, 17:16  
Gast
 
Beiträge: n/a
Standard

oder str_replace() mit einem array aufrufen [wäre wahrscheinlich schneller]:
PHP-Code:
<?php
$search 
= array('/''<''>''font''br'"\r""\n");
$sizex str_replace($search''$sizex);
?>
 
Alt 20.10.2005, 17:43  
Erfahrener Benutzer
 
Registriert seit: 29.10.2004
Beiträge: 1.781
derHund
Standard

Zitat:
Zitat von karl-150
wäre wahrscheinlich schneller
http://benchmark.nophia.de/benchmark...tzen-b-12.html
__________________
derHund ist offline  
Alt 20.10.2005, 17:43  
Gast
 
Beiträge: n/a
Standard

Zitat:
[wäre wahrscheinlich schneller]:
Sehr sehr unterschiedlich , hab es mal probiert
 
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
wiedermal sonderzeichen Promaetheus PHP Tipps 2007 10 07.03.2007 23:22
und wiedermal ich und das thema reguläre ausdücke PHP Tipps 2006 3 03.08.2006 02:05
Wiedermal unterschiedliche Interpretation von Opera und IE seejay HTML, Usability und Barrierefreiheit 9 19.06.2006 09:24
wiedermal fenstergröße ändern PHP Tipps 2006 7 31.01.2006 18:55
Wiedermal mein Gästebuch PHP Tipps 2005-2 3 15.09.2005 12:37
wiedermal ein kleines problem mit der post methode Tic Rederon PHP Tipps 2005-2 4 23.08.2005 08:59
wiedermal n neuling der hilfe braucht !!! Thema: include PHP Tipps 2005-2 7 18.07.2005 09:57
[Erledigt] Wiedermal ein Problem mit der Position -.- HTML, Usability und Barrierefreiheit 2 24.05.2005 18:03
[Erledigt] Wiedermal ein klassisches Datumsproblem PHP Tipps 2005 2 09.04.2005 22:41
wiedermal die md5() problematik... Promaetheus PHP Tipps 2004-2 10 12.11.2004 18:43
wiedermal die doofen session id´s Promaetheus PHP Tipps 2004 12 16.08.2004 17:13
Wiedermal if PHP Tipps 2004 2 16.08.2004 09:05

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php was ist schneller preg_match oder preg_replace, preg_match preg_replace schneller, preg_match preg_replace, php preg_match und preg_replace unterschiedlich, preg_replace <font, preg_replace werte size ändern, preg_replace preg_match_all schneller

Alle Zeitangaben in WEZ +2. Es ist jetzt 08:16 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.