[GastForen Programmierung/Entwicklung PHP und MySQL Wortmenge begrenzen

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

Wortmenge begrenzen

Gunther103
Beiträge gesamt: 157

29. Mär 2006, 22:56
Beitrag # 1 von 24
Bewertung:
(17115 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,
Bin schon wiedermal auf der Suche nach dem richtigen Befehl.
Ich will einen längeren Text als Einleser auf ca. 30 Worter begrenzen, wie ist das zu machen? Ich denke, das Skript muß nach dem 30ten Leerzeichen die Darstellung des Strings beenden. Wie ist das umzusetzen?

Gunther

(Dieser Beitrag wurde von Gunther103 am 29. Mär 2006, 22:56 geändert)
X

Wortmenge begrenzen

mbaer
Beiträge gesamt: 28

29. Mär 2006, 23:33
Beitrag # 2 von 24
Beitrag ID: #220637
Bewertung:
(17072 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Gunther

Ich habe das mal in dieser Art gelöst:

//Anweisungen, um die Länge des Haupttextes zu überprüfen und ggfs. zu kürzen
if(strlen($news['news_main'])>220){
$news['news_main']=substr($news['news_main'],0,180) . " ... <a href=news.php?news_ID=" . $news['news_ID'] . ">mehr</a>";

Das bedeutet in etwa: Wenn der Text länger als 220 Zeichen ist, gebe 180 Zeichen aus und gebe den gesamten Text in "news.php" aus (in meinem Fall lief die Teilausgabe über index.php und bei "mehr" die Gesamtausgabe des Textes in "news.php" (natürlich im gleichen Fenster).

Zwischen festgesetzter Länge/Kürzung eine genügende Menge einberechnen, damit bei "mehr" nicht nur noch ein kurzer Satz beendet wird sondern noch echte Zusatzinfo folgt.

Hoffe, das hilft dir weiter.

Gruss, Michael


als Antwort auf: [#220629]

Wortmenge begrenzen

Gunther103
Beiträge gesamt: 157

29. Mär 2006, 23:36
Beitrag # 3 von 24
Beitrag ID: #220638
Bewertung:
(17071 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Michael,

wie ist das bie Deinem Skript? Es verkürzt auf exakt 180 Zeichen? Heißt das, daß das letzte Wort irgendwo beendet wird?

Gunther


als Antwort auf: [#220637]

Wortmenge begrenzen

mbaer
Beiträge gesamt: 28

29. Mär 2006, 23:49
Beitrag # 4 von 24
Beitrag ID: #220642
Bewertung:
(17066 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Gunther

Ja, das passiert genau. Also das Wort kann mittendrin aufhören, z.B. "Selbstmanagement" hört dann so auf: "Selbstmana... mehr"

Gruss, Michial


als Antwort auf: [#220638]

Wortmenge begrenzen

oesi50
  
Beiträge gesamt: 2315

29. Mär 2006, 23:50
Beitrag # 5 von 24
Beitrag ID: #220643
Bewertung:
(17066 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf: Ich denke, das Skript muß nach dem 30ten Leerzeichen die Darstellung des Strings beenden. Wie ist das umzusetzen?


so?

Code
<?php 

$str = "
eins zwei drei vier fünf sechs sieben acht neun zehn
eins zwei drei vier fünf sechs sieben acht neun zehn
eins zwei drei vier fünf sechs sieben acht neun zehn
eins zwei drei vier fünf sechs sieben acht neun zehn
eins zwei drei vier fünf sechs sieben acht neun zehn
eins zwei drei vier fünf sechs sieben acht neun zehn
eins zwei drei vier fünf sechs sieben acht neun zehn
eins zwei drei vier fünf sechs sieben acht neun zehn
eins zwei drei vier fünf sechs sieben acht neun zehn";

preg_match('/(\w+\s*){30}/', $str, $ergebnis);

echo $ergebnis[0];
?>



als Antwort auf: [#220629]

Wortmenge begrenzen

Gunther103
Beiträge gesamt: 157

30. Mär 2006, 00:03
Beitrag # 6 von 24
Beitrag ID: #220644
Bewertung:
(17060 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Habs mal mit der 2. Lösung versucht und Blindtext verwendet:
Code
<?php 
$str = "Das erste, was ich sagen möchte, ist ein herzliches Wort des Dankes an meine Freunde im Evangelischen Arbeitskreis, die in diesen Jahrzehnten in diesem Jahr begehen wir noch ein wichtiges Erinnerungsdatum an Hermann Ehlers eine großartige Arbeit für unsere Sache geleistet haben. Der Evangelische Arbeitskreis hat in schwierigen Zeiten unserer Partei vor allem einen wichtigen Dienst geleistet, er hat immer wieder darauf hingewiesen, daß es wichtig ist, die Herausforderung des Tages zu begreifen, daß aber Politik, die hinführt zur Staatskunst, immer auch eine prinzipielle Begründung haben muß, daß sie standhalten muß den Anfragen nicht zuletzt aus der jungen Generation nach der Grundordnung, nach den Wertmaßstäben, an denen sich Politik ausrichtet.";

preg_match('/(\w+\s*){30}/', $str, $ergebnis);

echo $ergebnis[0];
?>

Die Ausgabe schaut so aus:
Code
ist ein herzliches Wort des Dankes an meine Freunde im Evangelischen Arbeitskreis 

Da stimmt was nicht.

Gunther


als Antwort auf: [#220643]

Wortmenge begrenzen

ganesh
Beiträge gesamt: 1981

30. Mär 2006, 00:19
Beitrag # 7 von 24
Beitrag ID: #220646
Bewertung:
(17056 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Kommt der String aus einer mySQL Datenbank?

Falls ja:

SELECT
CONCAT(SUBSTRING_INDEX(mytext, ' ', 30), '...')
AS intro;

http://dev.mysql.com/...tring-functions.html


als Antwort auf: [#220629]

Wortmenge begrenzen

oesi50
  
Beiträge gesamt: 2315

30. Mär 2006, 00:26
Beitrag # 8 von 24
Beitrag ID: #220647
Bewertung:
(17050 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
versuch's mal so:

Code
preg_match('/(\S+\s*){30}/', $str, $ergebnis); 



als Antwort auf: [#220644]

Wortmenge begrenzen

ganesh
Beiträge gesamt: 1981

30. Mär 2006, 00:26
Beitrag # 9 von 24
Beitrag ID: #220648
Bewertung:
(17050 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
...und hier eine Lösung nur mit PHP:

Code
<? 
$str = "Perhaps a re-engineering of your current world view will re-energize your online nomenclature to enable a new holistic interactive enterprise internet communication solution. Upscaling the resurgent networking exchange solutions, achieving a breakaway systemic electronic data interchange system synchronization, thereby exploiting technical environments for mission critical broad based capacity constrained systems. Empowerment in information design literacy demands the immediate and complete disregard of the entire contents of this cyberspace communication.";

if(str_word_count($str) > 30) {
$newStr = split(' ', $str);
for($c=0; $c<30; $c++) {
echo $newStr[$c] . " ";
}
} else {
echo $str;
}

?>



als Antwort auf: [#220629]

Wortmenge begrenzen

Gunther103
Beiträge gesamt: 157

30. Mär 2006, 00:27
Beitrag # 10 von 24
Beitrag ID: #220649
Bewertung:
(17049 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Das erste Skript funktioniert, schneidet aber die Wörter auseinander. Das zweite versteh ich halt nicht, es funktioniert jetzt aber auch hervorragend, genauso wie die 3.Lösung. Welche ist am resourcenfreundlichste?


als Antwort auf: [#220644]
(Dieser Beitrag wurde von Gunther103 am 30. Mär 2006, 00:36 geändert)

Wortmenge begrenzen

oesi50
  
Beiträge gesamt: 2315

30. Mär 2006, 00:41
Beitrag # 11 von 24
Beitrag ID: #220651
Bewertung:
(17044 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Die beste Beschreibung ist in der Perl-Doku, besonders die Abschnitte 'perlre', 'perlrequick' und 'perlretut'.

Kurze Erklärung zum Ausdruck:
/(\S+\s*){30}/

\S+ mindestens 1 Nichtleerzeichen oder beliebig viele
gefolgt von
\s* beliebig vielen oder keinem Leerzeichen

(\S+\s*){30} das ganze 30 mal

ich hatte vorher \w verwendet, wodurch die Kommas nicht berücksichtigt wurden.


als Antwort auf: [#220649]
(Dieser Beitrag wurde von oesi50 am 30. Mär 2006, 00:45 geändert)

Wortmenge begrenzen

Gunther103
Beiträge gesamt: 157

30. Mär 2006, 00:49
Beitrag # 12 von 24
Beitrag ID: #220654
Bewertung:
(17040 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich habs mal in meine Seite eingefügt, da habe ich hintereinander 2 x 16 Texte, die so gekürzt werden. Jetzt dauert der Aufbau der Seite ca. 10 sec (Hoppla!).


als Antwort auf: [#220651]

Wortmenge begrenzen

Gunther103
Beiträge gesamt: 157

30. Mär 2006, 01:32
Beitrag # 13 von 24
Beitrag ID: #220661
Bewertung:
(17034 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hier die Abfrage mit der reinen PHP-Lösung (Funktioniert allerdings in meiner abfrage nicht, warum weiß ich nicht. Irgendwo ist ein Fehler.
Code
mysql_select_db("$db"); 
$query="SELECT * FROM musiker ORDER BY sortierung";
$result=mysql_query($query);
$number=mysql_num_rows($result);
$i = 0;
while ($i < $number) {
$row =mysql_fetch_array($result);
$name = $row[name];
$bild = $row[bild];
$bild_gr = $row[bild_gr];
$instrument = $row[instrument];
$sortierung = $row[sortierung];
$text_d = eregi_replace("\n","<br>", $row[text_d]);
if(str_word_count($text_d) > 30) {
$newtext = split(' ', $text_d);
for($c=0; $c<29; $c++) {
$text_d=$newtext[$c] . " ";
}
}
$text_e = eregi_replace("\n","<br>", $row[text_e]);
if(str_word_count($text_e) > 30) {
$newtexte = split(' ', $text_e);
for($c=0; $c<29; $c++) {
$text_e=$newtexte[$c] . " ";
}
}
echo "<tr><td valign='top'><div class='lesen'><a href='edit-musiker.php?sortierung=$sortierung'>&auml;ndern</a></div></td>
<td valign='top'><div class='lesen'>$name</div></td>
<td valign='top'><div class='lesen'>$text_d ...</div></td>
<td valign='top'><div class='lesen'>$text_e ...</div></td>
<td valign='top'><div class='lesen'>$bild</div></td>
<td valign='top'><div class='lesen'>$bild_gr</div></td>
<td valign='top'><div class='lesen'>$sortierung</div></td>
</tr>";
$i++;
}

Als Ergebnis werden in den einzelnen Zellen nur einzelne Worte ausgegeben, die nicht die ersten der Texte sind!!


als Antwort auf: [#220654]

Wortmenge begrenzen

ganesh
Beiträge gesamt: 1981

30. Mär 2006, 06:02
Beitrag # 14 von 24
Beitrag ID: #220669
Bewertung:
(17017 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Meine Güte, wieso benutzt Du nicht meine 1. Lösung, die ich gepostet habe?

Eine Grundregel beim Arbeiten mit Datenbanken ist:
Wenn Du eine Funktion INNERHALB von mySQL ausführen kannst, dann mache sie auch dort. Nicht hinterher mit PERL/PHP etc.

Wieso kompliziert, wenn's auch einfach geht?


als Antwort auf: [#220661]

Wortmenge begrenzen

Pozor
Beiträge gesamt: 892

30. Mär 2006, 07:07
Beitrag # 15 von 24
Beitrag ID: #220672
Bewertung:
(16999 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

nur so ganz generell:
ereg* Funktionen benutzen: die sind alt und langsam,
man sollte diese nicht mehr verwenden. Es gibt die neueren preg* Frunktionen
die schneller sind.


als Antwort auf: [#220669]
X

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
14.05.2024

Online
Dienstag, 14. Mai 2024, 10.00 - 10.30 Uhr

Webinar

Prozessoptimierung ist ein Teamsport! Keine Software und keine Maschine allein kann Ihnen helfen, die Effizienzpotenziale Ihres Betriebes maximal auszuschöpfen. Von der Auftragsannahme über die Vorstufe und den Druck bis hin zur Weiterverarbeitung – alles muss optimal ineinandergreifen. Apropos Weiterverarbeitung – in vielen Druckbetrieben fristet sie in Sachen Prozessoptimierung immer noch ein Schattendasein. Dabei liegen hier mittlerweile die größten Einsparpotenziale! In einem Webinar von Horizon und Impressed erfahren Sie, wie Sie diese Einsparungen realisieren können. Horizon, bekannt für innovative Lösungen in der Druckweiterverarbeitung, bietet mit iCE LiNK eine Workflowlösung für die Weiterverarbeitung. iCE LiNK überwacht, visualisiert und analysiert Produktionsabläufe und unterstützt bei der Wartung – damit immer alles reibungslos läuft. Den gleichen Anspruch hat der von Impressed entwickelte Impressed Workflow Server – er ist die smarte PDF-Workflow-Lösung für Druckereien, die Datenmanagement, Preflight und Produktionssteuerung übernimmt. Im Webinar zeigen Ihnen die Experten von Horizon und Impressed, wie beide Lösungen im Team die Effizienz und Produktivität Ihres Betriebes steigern können. Melden Sie sich am besten gleich an, wir freuen uns auf Sie! PS: Melden Sie sich in jedem Fall an – sollten Sie zum Termin verhindert sein, erhalten Sie die Aufzeichnung.

kostenlos

Ja

Organisator: Impressed / Horizon

https://www.impressed.de/schulung.php?c=sDetail&sid=327

Einsparpotenziale in der Weiterverarbeitung
Veranstaltungen
16.05.2024

Online
Donnerstag, 16. Mai 2024, 10.00 - 10.30 Uhr

Webinar

Komplizierte, kleinteilige Aufträge; alles sehr speziell; seit Jahren bewährte Prozesse – da können wir nichts standardisieren und automatisieren! Das sagen viele Großformatdrucker – aber stimmt das wirklich, ist dem tatsächlich so? Günther Business Solutions und Impressed treten in einem Webinar den Gegenbeweis an. Experten beider Unternehmen zeigen, wie Großformatdrucker vom Einsatz zweier bewährter Lösungen profitieren können: • von advanter print+sign von Günther Business Solutions, dem ERP-System für den Großformatdruck, dass alle Phasen der Wertschöpfung im Large Format Printing abdeckt • von Impressed Workflow Server, der smarten PDF-Workflow-Lösung für Druckereien, die Datenmanagement, Preflight und Produktionssteuerung übernimmt Über die Kombination beider Lösungen können Großformatdrucker ihre Prozesse mit modernen Workflows Schritt für Schritt automatisieren – und so zügig deutliche Zeit- und Kosteneinsparungen realisieren. Das Webinar sollten Sie sich nicht entgehen lassen – damit Sie keine Effizienzpotenziale mehr liegen lassen. Melden Sie sich am besten gleich an, wir freuen uns auf Sie! PS: Melden Sie sich in jedem Fall an – sollten Sie zum Termin verhindert sein, erhalten Sie die Aufzeichnung.

kostenlos

Nein

Organisator: Impressed / Günther Business Solutions

https://www.impressed.de/schulung.php?c=sDetail&sid=326

Und es geht doch: Automatisierung im Großformatdruck!